3

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

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

4 回答 4

6

033是一个八进制整数文字,其值为8*3+3 = 27. 您的代码打印28

以 a 开头的整数文字0是八进制。如果它以0x十六进制开头。

顺便说一下,为了一个例子

int x = 08; //error

是一个编译时错误,因为8它不是八进制数字。

于 2010-12-07T13:56:36.493 回答
0

我会冒险猜测并说28:)

于 2010-12-07T13:56:32.423 回答
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
于 2010-12-07T14:34:17.497 回答
0

28.

033 是 C 中的八进制数,因为它有一个前导“0”,这意味着它的值是十进制的 27。

所以,27 + 1 = 28

于 2010-12-07T13:57:16.430 回答