【发布时间】:2015-11-27 18:34:15
【问题描述】:
在下面的代码中,变量“b”的值是“133”,这很简单。变量'a'怎么样?为什么是“131”?
我发现唯一的区别是“015”而不是“15”。
#include<stdio.h>
int main()
{
int a,b,c;
a=015 + 0x71 +5;
printf("%d\n",a); // prints '131'
b=15 + 0x71 +5;
printf("%d\n",b); // prints '133'
}
谁能告诉我这里发生了什么?
【问题讨论】:
-
十六进制 = base 16 =
0x{9-9A-Fa-f_]+,每个“数字”代表4位,八进制 = base 8 =0[0-7_]+,每个数字代表 3 位。 015 是八进制。十六进制在计算机史上取得了胜利。