This question already has answers here:
What is special about numbers starting with zero?
                                
                                    (4个答案)
                                
                        
                                9个月前关闭。
            
                    
你能解释一下吗?为什么给出56的输出值?

#include <stdio.h>
#include <conio.h>

void main()
{
    int x = 070;
    printf("%d", x);
    getch();
}

最佳答案

0开头的任何整数文字(整数常量)都是octal representation

引用C11,第§6.4.4.1章,整数常量


  octal-constant:
  
  0
  八进制常数八进制数字





  八位数字:

  0 1 2 3 4 5 6 7



并且,根据第7.2.1.6.1节的规定,对于带有%dprintf()格式说明符,(强调我的)


  d,i int参数转换为带符号的十进制[...]


从而,octal 70 == decimal 56

关于c - 为什么在C程序中int 070的输出为56? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36650007/

10-11 21:01