我不知道为什么会这样!想知道原因。
{
int i=01;
printf("%d\n",i);
}
output: 1
但
{
int i=011;
printf("%d\n",i);
}
output: 9
有人有答案吗?
011
是八进制常数。11 (b8) = 9 (b10)
.
C11 (n1570), § 6.4.4.1 整数常量
八进制常量由前缀 0 组成,可选地后跟数字 0 到 7 的序列。
011 = 八进制,(1*8)+1=9 ...................
The numbers which are preceded by 0 is called octal numbers in c programming .
to evaluate such an expression we simply follow a conversion rule of converting octal to decimal number system
For conversion the following steps are to be proceed
such as 011
here 0 indicate the number is octal
and we are require to convert 11 which is (base 8) to decimal (base 10)
11= 1x8^1+1x8^0
=8+1
=9