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