整型提升 。

下面这段代码的输出结果是什么?
#include

int main()
{
char a = -1;
signed char b = -1;
unsigned char c = -1;
printf("a=%d, b=%d, c=%d", a, b, c);
return 0;
}
我先把运行结果放下来(我的是VS2019环境)

 结果 a = -1 、 b = -1 、 c  = 255,那为什么呢?
这里就涉及整型提升、数据在内存中的存储,原码、反码、补码的知识,我前面的文章有提到数据的存储、已经原码、反码、补码的知识,这里不在详细解释。
下面是原码、反码、补码的转换方法:

 
回归开始的题,先从 a 开始吧, a = -1 是负数,所以原码、反码、补码如下:

10000000000000000000000000000001 -1原码

11111111111111111111111111111110 -1反码

1111111111111111

整型提升 。最先出现在Python成神之路

版权声明:
作者:主机优惠
链接:https://www.techfm.club/p/27781.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>