今天看到一个简单的C程序,是把一个整形数据赋给一个char类型变量,我自己实现了下,发现结果很有意思
代码:
#include<stdio.h>
int main()
{
int a=128;
char b=127;
char c=128;
char d=129;
printf("a=%x,a=%d\n",a,a);
printf("b=%x,b=%d\n",b,b);
printf("c=%x,c=%d\n",c,c);
printf("d=%x,d=%d\n",d,d);
return 0;
}
结果:
分析:谭浩强《C程序设计》P60(5)中写道“将一个int、short、long型数据赋给一个char型变量时,只将其低8位原封不动地送到char型变量(即截断)”,根据这个可以推出c=-128 d=-127,但是为什么以16进制输出时前面会有6个f (难道因为符号位?)?