当显示变量"int a = 011"的值时,我得到9.为什么?

Iva*_*cov 3 c decimal octal

使用此代码段:

int a = 011;
printf("a = %d", a);
Run Code Online (Sandbox Code Playgroud)

为什么是结果

a = 9

hac*_*cks 12

011是八进制值,其十进制等效值为9.前面的整数字面值0表示八进制值.
使用%o说明符printf以八进制打印值.


Sou*_*osh 10

字面值或常量0中的前导表示八进制值.它被称为八进制常量.intint

相关:C11标准,第6.4.4.1章,整数常数,第3段,

一个八进制常数由前缀0任选地随后的数字序列0通过7只.


zos*_*ska 8

凭借0在数字文字的开头,您指定的八进制.而11在八进制系统中1*8 + 1 = 9.