c语言 - 显示变量 "int a = 011" 的值时,我得到 9。为什么?



使用下面的代码片段:

int a = 011;
printf("a = %d", a);

为什么结果是

a = 9

011为八进制值,其十进制值为9。前面带0的整数字面值表示八进制值。

使用%o指定符在printf中打印八进制值。

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

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

八进制常数由前缀0(可选)和数字07的序列组成。

使用0作为数字字面值的开头,您可以指定八进制系统。而八进制中的111*8 + 1 = 9

最新更新