请看下面的C代码。
#include <stdio.h>
int main(void)
{
char c1 = 3000;
char c2 = 250;
printf("%d\n",c1);
printf("%d\n",c2);
}
上述代码的输出为
-72
-6
请解释此处应用的整数到字符的转换规则,因为3000和250都超出了字符的范围(-128到127)。
发布于 2018-06-01 08:21:28
Integer使用4字节,char使用1字节。C中的数字被表示为有符号,这意味着从左边开始的第一位是符号(正,负),其余的是完全补码中的数字。所以数字3000
在二进制中是这样表示的,而对于整数,它是这样存储的。因为char只有1个字节,所以最后8位表示在char变量中保存的数字,即10111000
。当你把它转换成十进制时,你会得到-72。
https://stackoverflow.com/questions/50634428
复制相似问题