C++ 为什么要在C++;到010不同于将其初始化为10?

C++ 为什么要在C++;到010不同于将其初始化为10?,c++,C++,当一个整数被初始化为int a=010时,a实际上被设置为8,但是对于int a=10,a被设置为10。 有谁能告诉我为什么a对于int a=010没有设置为10吗?在C,C++,Objective C和相关语言中,0前缀表示一个文字常量,所以010=8十进制。在010前导0表示这个数字是八进制形式。所以010在十进制中表示8。因为它将010解释为八进制格式的数字。在base-8系统中,数字10等于base-10(我们的标准计数系统)中的数字8 更普遍的是,在C++世界中,用“代码> 0”/CO

当一个整数被初始化为
int a=010
时,
a
实际上被设置为8,但是对于
int a=10
a
被设置为10。
有谁能告诉我为什么
a
对于
int a=010
没有设置为10吗?

C
C++
Objective C
和相关语言中,
0
前缀表示一个文字常量,所以
010
=
8
十进制。

在010前导0表示这个数字是八进制形式。所以010在十进制中表示8。

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


更普遍的是,在C++世界中,用“代码> 0”/CODEL预先装入整数文字指定八进制文字,因此编译器的行为与预期一致。

< P> <强> 0 <强>之前,数字表示符号。因此,由于八进制使用的基数为8010等于8

同样地,0x用于以16为基数的表示法。因此0x10将等于十进制中的16