整型提升 。
下面这段代码的输出结果是什么?
#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成神之路。
共有 0 条评论