为什么将C ++中的整数初始化为010与初始化为10不同?

时间:2011-06-15 14:33:42

标签: c++

当一个整数初始化为int a = 010时,a实际上设置为8,但对于int a = 10a设置为10。 任何人都可以告诉我a为什么int a = 010未设置为10?

4 个答案:

答案 0 :(得分:10)

因为它将010解释为八进制格式的数字。在base-8系统中,数字10等于base-10(我们的标准计数系统)中的数字8

更一般地说,在C ++世界中,为0添加整数文字前缀指定了八进制文字,因此编译器的行为完全符合预期。

答案 1 :(得分:7)

CC++Objective C及相关语言中,0前缀表示octal字面常量,因此010 = {{ 1}}十进制。

答案 2 :(得分:7)

数字前的

0 表示它是octal符号。因此,由于八进制使用 8 的基数, 010 将等于 8

同样, 0x 用于使用 16 基础的hexadecimal表示法。所以 0x10 等于 16 十进制。

答案 3 :(得分:6)

010中的前导0表示此数字为八进制形式。所以010表示十进制的8。