
所以看如下代码,结果相同
代码1:
#include<stdio.h>
int main()
{
char a = -128;
//10000000000000000000000010000000-原
//11111111111111111111111101111111-反
//11111111111111111111111110000000-补
// 10000000
//截断 整型提升
//11111111111111111111111110000000
//%u 打印十进制的无符号数字 ----原反补相同
printf("%u\n", a);
//%d 打印十进制的有符号数字
//%u 打印十进制的无符号数字
return 0;
}
//结果为4294967168
代码2:
#include<stdio.h>
int main()
{
char a = 128;//相当于-128
//存不下128 但是128=127+1----->-128
printf("%u\n", a);
return 0;
}
//结果也为4294967168
文章讨论了C语言中,当字符变量存储-128时,尽管超过其定义范围,但通过不同的整型转换和printf输出,两个代码段都显示结果为4294967168,解释了整型溢出和默认行为。
1128

被折叠的 条评论
为什么被折叠?



