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

时间:2010-12-07 13:54:22

标签: c printf fragment

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

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

4 个答案:

答案 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)

这是一个提示:

  • 开头为零的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