题
以下代码片段(在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
不隶属于 StackOverflow