int和char之间的实际区别

Sou*_*uza 6 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);
Run Code Online (Sandbox Code Playgroud)

所以,我现在知道那int代表整数和char字符; 我读过有关的区别,如果我把在printf%d,它返回的数字形式,并且%c,在字符的形式.

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

von*_*and 8

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


ssa*_*tos 7

在问题中使用的平台上,类型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
Run Code Online (Sandbox Code Playgroud)

  • 字符不一定是8位,不是必须签名.如果您的答案以"显然,在您正在使用的C环境中,......"作为前缀,那会更好. (4认同)