int和char之间的实际区别

时间:2013-04-08 01:30:50

标签: c

我必须分析这些代码片段的输出:

int x, y;
x = 200; y = 100;
x = x+y; y = x-y; x = x-y;
printf ("%d %d\n", x, y);

char x, y;
x = 200; y = 100;
x = x+y; y = x-y; x = x-y;
printf ("%d %d\n", x, y);

所以,我现在知道int代表整数,char代表字符;我已经阅读了差异,如果我放入printf %d,它会以数字的形式返回,%c会以字符的形式返回。

'A'的ASCII字符代码例如为65,但为什么第二个函数打印100 -56而不是100 200

2 个答案:

答案 0 :(得分:8)

C有多种整数类型:char(至少8位),short(至少16位),int(至少16位),{{1 (至少32位)。其中有long种。如果为普通类型分配的值太大,则结果是未定义的(您永远不应该这样做,编译器可能会假设您从未这样做,而根本不检查)。在unsigned案例中,他们“环绕”。但请注意,尺寸无法保证,只是它们的最小尺寸。有些机器都是32位宽。

答案 1 :(得分:6)

在问题中使用的平台上,类型char似乎是1字节(8位)大小,并且是带有1个符号位和7个值位(并使用2的补码算术)的带符号类型。它存储的值从-128到127.因此,xy正在发生这种情况:

x = 200 => x takes value -56
y = 100 => y takes value 100
x = x+y => x takes value 44
y = x-y => y takes value -56
x = x-y => x takes value 100