【发布时间】:2012-11-10 10:32:30
【问题描述】:
我不知道为什么会这样!想知道原因。
{
int i=01;
printf("%d\n",i);
}
output: 1
但是
{
int i=011;
printf("%d\n",i);
}
output: 9
有人知道答案吗?
【问题讨论】:
我不知道为什么会这样!想知道原因。
{
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 的序列。
【讨论】:
0 开头。阅读报价。
1*8 + 2*1 = 10。如果您的文字以 0 开头,则它是八进制文字。尝试在printf 中使用%o 格式。
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
【讨论】: