以下代码片段(在 C 中)打印什么?
int a = 033;
printf("%d", a + 1);
033
是一个八进制整数文字,其值为8*3+3 = 27
. 您的代码打印28
。
以 a 开头的整数文字0
是八进制。如果它以0x
十六进制开头。
顺便说一下,为了一个例子
int x = 08; //error
是一个编译时错误,因为8
它不是八进制数字。
我会冒险猜测并说28
:)
这是一个提示:
试试看这个例子:
#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
28.
033 是 C 中的八进制数,因为它有一个前导“0”,这意味着它的值是十进制的 27。
所以,27 + 1 = 28