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

Lak*_*hmi 5 c++

当一个整数初始化为int a = 010,a实际上设置为8,但是,for int a = 10,a设置为10.任何人都可以告诉我为什么a不设置为10 int a = 010

Cod*_*ray 10

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

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


Pau*_*l R 7

CC++,Objective C和相关语言中,0前缀表示八进制文字常量,因此010= 8十进制.


inq*_*uam 7

数字前的0表示它是八进制表示法.因此,由于八进制使用8的基数,010将等于8.

以相同的方式,0x用于使用16的基数的十六进制表示法.所以0x10在十进制中 等于16.


Zul*_*jin 6

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