我试着用这个简单的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

最佳答案

在C语言中,以0开头的数字是以8为基数(八进制)而不是十进制所以你的数字实际上是十进制的。
在主题中,以0126开头的数字也是十六进制(以16为基数),例如86

10-08 07:36