C类型转换

来源:互联网 发布:威风堂堂动作数据下载 编辑:程序博客网 时间:2024/06/10 00:31
int main(void){signed short A = -10;printf("~A = %u\n", ~A);char c = 128;printf("c=%d\n",c);return 0;}

    通过这个简单的测试,发现自己对类型转换的规则的细节需要做一个分析,以明确转化时的规则。

   1.char转为为int类型,即有符号signed char转换为signed int:
      char类型占1字节内存大小,int类型占4字节,所以char转为int,在int类型变量高位前3个字节要填充填充位的二进制为char类型最高位的比特,如
      char a=0x11;// 0001 0001(1字节)
      int b=a;//前3字节补0
     转化后b的十六进制为0x00000011

     char a=0x81;// 1000 0001
     int b=a;//前三个字节补1    转化后b的十六进制为0xffffff81

2.unsigned char转为int又是不同的,
unsigned char a=0xf1;//或a=0x11;(最高位是1或0的差别)
int b=a;
printf("%x\n",b);
这里无论无符号char类型变量的最高比特是0或1,转为有符号int类型时,int前面高三位字节都是补0


0 0
原创粉丝点击