数据类型扩展

版权声明:私藏源代码是违反人性的罪恶行为!博客转载无需告知,学无止境。 https://blog.csdn.net/qq_41822235/article/details/83349128

记住两句话:

  1. 位宽相等,不改变数据在内存中的存储形式;
  2. 位宽不等,基准是int类型;原始类型是unsigned,填充零;signed,填充符号位。

请看例子:

例子1

signed char a = 0xe0;    //第一行
unsigned int b = a;        //第二行
unsigned char c = a;    //第三行
a == c;    //第四行

第二行位宽不等,对a需要进行符号位填充,故而b在内存中的表现形式是0xffff ffe0。

第三行位宽相等,故而不考虑扩展,变量c在内存中的表现形式仍为0xe0。

第四行位宽不相等,而且位宽都没有达到int,故而a填充成0xffff ffe0,c填充成0x 0000 00e0,逻辑值为false

例子2

signed int a = 0x e000 0000;    //第一行
unsigned int b = a;        //第二行
b == a;        //第三行

位宽相等,a转成无符号的再同b去比较,结果为真。

猜你喜欢

转载自blog.csdn.net/qq_41822235/article/details/83349128
今日推荐