关于“截断”的C程序

来源:互联网 发布:网络文件传输软件 编辑:程序博客网 时间:2024/05/24 05:07

今天看到一个简单的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 (难道因为符号位?)?