我必须分析这些代码片段的输出:
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?
C具有各种整数类型:( char至少8位),short(至少16位),int(至少16位),long(至少32位).有unsigned各种各样的.如果为普通类型分配的值太大,则结果是未定义的(您永远不应该这样做,编译器可能会假设您从未这样做,而根本不检查).在这种unsigned情况下,他们"环绕".但请注意,尺寸不能保证,只是它们的最小尺寸.有些机器都是32位宽.
在问题中使用的平台上,类型char似乎是1字节(8位)大小,并且是带有1个符号位和7个值位(并使用2的补码算术)的带符号类型.它存储的值从-128到127所以,这是发生了什么x和y:
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)