繁体   English   中英

int和char之间的实际区别

[英]Practical difference between int and char

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

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

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

在问题中使用的平台上, 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM