当我将前导0添加到int时,为什么C ++表现得很奇怪?

时间:2017-08-20 02:08:07

标签: c++

为什么

cout << 0110 << endl;

打印72?

我没想到将一个0加到int会有什么不同,不应该'0110'和'110'相同吗?

2 个答案:

答案 0 :(得分:1)

请注意,0110octal-literal

  

octal-literal是数字零(0),后跟零个或多个八进制数字(0,1,2,3,4,5,6,7)

这就是为什么你在打印出来时72获得它的原因,它与110不一样。

答案 1 :(得分:1)

编译器的权利。

如果前导零为零,则您的号码将被视为基于8,因此0110表示(110) 8 ,等于(72) 10

如果您尝试编写08,您的编译器会抱怨它不是有效的八进制数。