C类型转换

    xiaoxiao2021-04-16  32

    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

    转载请注明原文地址: https://ju.6miu.com/read-673180.html

    最新回复(0)