我正在尝试这个简单的C程序来划分数字..
void main()
{
int i,j,k;
i=00126;
j=2;
k=i/j;
printf("%d",k);
}
它显示输出为43而不是63 ..如果我将另一个0设为
i=000126;
现在我收到的错误是非法的八进制数字。
如果我正在尝试
i=00000001000;
它没有显示任何错误,结果为256 ..我无法理解这个意外的输出。任何人都能说出为什么会产生这样的输出吗?
明确的解释将不胜感激。
编辑:如果我试过
int i,j,k;
i=1000;
j=0002;
k=i/j;
printf("%d",k); //which gives 500 as result
答案 0 :(得分:4)
在C中,以0
开头的数字是基数8(八进制)而不是十进制。因此,您的号码0126
确实是十进制的86
。
在主题上,以0x
开头的数字也是十六进制(基数为16),例如0x1a5
。
答案 1 :(得分:2)
答案 2 :(得分:1)
00126被读作八进制数(64 + 2 * 8 + 6 = 86)。所以,43是正确的。如果你想要一个小数126,写上126。
答案 3 :(得分:0)
当前缀为0
的整数时,它被解释为八进制(基数为8)的数字。所以0126实际上是86。