C语言结果分析

来源:百度知道 编辑:UC知道 时间:2024/06/16 17:24:38
void main()
{ char c=257;
printf("%d %u",c,c);
}
为什么结果是 1 1
请解说一下谢谢。

十进制:256
二进制:100000000 (9个二进制位)
而char型的数据最多只能装下8个二进制位,溢出了最高位1,所以当char型的数据被赋值为256时其实保存的结果是00000000,其实输出的结果回是0;
当被赋予257(100000001)时,其实保存的结果是00000001,输出的结果是1;