为什么
cout << 0110 << endl;
打印72?
我没想到将一个0加到int会有什么不同,不应该'0110'和'110'相同吗?
答案 0 :(得分:1)
请注意,0110
是octal-literal:
octal-literal是数字零(0),后跟零个或多个八进制数字(0,1,2,3,4,5,6,7)
这就是为什么你在打印出来时72
获得它的原因,它与110
不一样。
答案 1 :(得分:1)
编译器的权利。
如果前导零为零,则您的号码将被视为基于8,因此0110
表示(110) 8 ,等于(72) 10
如果您尝试编写08
,您的编译器会抱怨它不是有效的八进制数。