【发布时间】:2010-12-07 13:54:22
【问题描述】:
以下代码片段(用 C 语言)打印什么?
int a = 033;
printf("%d", a + 1);
【问题讨论】:
-
你自己试过了吗?这通常是找出答案的最好方法。问为什么是另一回事。
-
谢谢科迪,我只是需要一个“快速回答”。感谢所有回复。
以下代码片段(用 C 语言)打印什么?
int a = 033;
printf("%d", a + 1);
【问题讨论】:
033 是一个八进制整数文字,其值为8*3+3 = 27。您的代码打印出28。
以0 开头的整数文字是八进制。如果它以0x 开头,则为十六进制。
顺便举个例子
int x = 08; //error
是一个编译时错误,因为8 不是八进制数字。
【讨论】:
我会冒险猜测并说28 :)
【讨论】:
28.
033 是 C 中的八进制数,因为它有一个前导“0”,这意味着它的值是十进制的 27。
所以,27 + 1 = 28
【讨论】:
这里有一个提示:
试试看这个例子:
#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
【讨论】: