隐式类型提升规则这篇文章是用来作为关于C中的隐式整数提升的常见问题,特别是由通常的算术转换和/或整数提升引起的隐式提升。例1)为什么这会给出一个奇怪的大整数而不是255呢?unsigned char x = 0;unsigned char y = 1;printf("%u\n", x - y);例2)为什么这会产生“-1大于0”?unsigned int a = 1;signed int b = -2;if(a + b > 0)
puts("-1 is larger than 0");例3)为什么将上述示例中的类型更改为short解决问题?unsigned short a = 1;signed short b = -2;if(a + b > 0)
puts("-1 is larger than 0"); // will not print(这些示例用于一台短16位的32位或64位计算机。)
2 回答
- 2 回答
- 0 关注
- 537 浏览
添加回答
举报
0/150
提交
取消