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

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

问题描述:

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

int a = 033; 
printf("%d", a + 1); 
+0

我想你知道 – 2010-12-07 13:59:33

+1

你有你自己试了一下答案吗?这通常是找出问题的最佳方式。问*为什么*是另一回事。 – 2010-12-07 14:04:02

+0

感谢科迪,我只是需要一个“快速回答”。感谢所有的答复。 – Lucas 2010-12-07 14:15:35

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