以下代码片段(在C中)打印了什么?

int a = 033;
printf("%d", a + 1);
有帮助吗?

解决方案

033 是一个 八进制整数字面 它的价值是 8*3+3 = 27. 。您的代码打印 28.

整数字面形式,以一个 0 是八元。如果它开始 0x 这是十六进制。

顺便说一下,为了一个例子的缘故

int x = 08; //error

是编译时间错误,因为 8 不是八分之一。

其他提示

我会冒险猜测并说 28 :)

28.

033是C中的一个八进制数,因为它具有领先的“ 0”,这意味着其值为27。

因此,27 + 1 = 28

这是一个提示:

  • 一开始是零的3位数是八位。
  • 一开始,带有“ 0x”的2位值是十六进制。

尝试查看此示例:

 #include<stdio.h>
 main()
 {
 int a = 033;
 printf("\nin decimal: %d", a+1);
 printf("\nin hex: %x", a+1);
 printf("\nin octal: %o", a+1);
 }

这导致:

in decimal: 28
in hex: 1c
in octal: 34
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top