当显示变量“int a = 011”的值时,我得到9.为什么?
使用此代码段:
int a = 011; printf("a = %d", a);
结果如何?
a = 9
011
是八进制值,其十进制等效值为9.前面的整数字面值为0
表示八进制值。
使用printf
%o
说明符以八进制forms打印值。
int
literal或int
常量中的前导0
表示八进制值。 它被称为八进制常量。
相关: C11
标准,第6.4.4.1章, 整数常数 ,第3段,
八进制常量由前缀
0
组成,可选地后跟一个数字0
到7
的序列。
如果数字文字的开头为0
,则指定八进制系统。 并且八进制系统中的11
是1*8 + 1 = 9
。