当一个整数初始化为int a = 010
时,a
实际上设置为8,但对于int a = 10
,a
设置为10。
任何人都可以告诉我a
为什么int a = 010
未设置为10?
答案 0 :(得分:10)
因为它将010
解释为八进制格式的数字。在base-8系统中,数字10
等于base-10(我们的标准计数系统)中的数字8
。
更一般地说,在C ++世界中,为0
添加整数文字前缀指定了八进制文字,因此编译器的行为完全符合预期。
答案 1 :(得分:7)
在C
,C++
,Objective C
及相关语言中,0
前缀表示octal字面常量,因此010
= {{ 1}}十进制。
答案 2 :(得分:7)
0 表示它是octal符号。因此,由于八进制使用 8 的基数, 010 将等于 8 。
同样, 0x 用于使用 16 基础的hexadecimal表示法。所以 0x10 等于 16 十进制。
答案 3 :(得分:6)
010中的前导0表示此数字为八进制形式。所以010表示十进制的8。