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

时间:2015-06-03 09:24:36

标签: c decimal octal

使用此代码段:

thread 1:
send message A.1 to client

context switch

thread 2: 
send message B.1 to client
recv message A.2 from client

context switch

thread 1:
recv message B.2 from client

为什么是结果

  

a = 9

3 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:10)

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

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

  

八进制常量由前缀0组成,可选地后跟一系列数字07

答案 2 :(得分:7)

在数字文字的开头使用0,指定八进制系统。八进制系统中的111*8 + 1 = 9