以下代码片段(在C中)是什么打印的?
答
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
我想你知道 – 2010-12-07 13:59:33
你有你自己试了一下答案吗?这通常是找出问题的最佳方式。问*为什么*是另一回事。 – 2010-12-07 14:04:02
感谢科迪,我只是需要一个“快速回答”。感谢所有的答复。 – Lucas 2010-12-07 14:15:35