为什么`var = 010`在C语言中给出`var`值`8`?

时间:2019-06-23 13:59:53

标签: c

我无法理解以下代码产生的输出:

#include <stdio.h>

int main()
{
    int var = 010;
    printf("%d", var);
}

以上代码的输出为8

2 个答案:

答案 0 :(得分:1)

前导0引入一个八进制常量,因此010是八进制的,十进制为8。如果要使用二进制,请写0b010(十进制为2)。

答案 1 :(得分:1)

010integer constant(即文字),以octal进行编码:

001 == 1
002 == 2
...
007 == 7
010 == 8

当您使用格式说明符%d调用printf时,它会打印以十进制编码的给定有符号整数的值,因此,您将看到写入到{输出。