简单C程序除数

时间:2013-02-08 12:39:08

标签: c math division

我正在尝试这个简单的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

4 个答案:

答案 0 :(得分:4)

在C中,以0开头的数字是基数8(八进制)而不是十进制。因此,您的号码0126确实是十进制的86

在主题上,以0x开头的数字也是十六进制(基数为16),例如0x1a5

答案 1 :(得分:2)

C中以0开头的任何数字文字都是八进制数。

所以(0126)八进制= (86)十进制。

修改

根据评论,请查看有关数字positional notation的文章。

答案 2 :(得分:1)

00126被读作八进制数(64 + 2 * 8 + 6 = 86)。所以,43是正确的。如果你想要一个小数126,写上126。

答案 3 :(得分:0)

当前缀为0的整数时,它被解释为八进制(基数为8)的数字。所以0126实际上是86。