最佳答案
这篇文章的目的是作为一个常见问题,关于隐式整数提升 C,特别是隐式提升所造成的通常算术转换和/或整数提升。
例一)
为什么它给出的是一个奇怪的大整数而不是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");
例三)
为什么将上面例子中的类型改为 short
可以解决这个问题?
unsigned short a = 1;
signed short b = -2;
if(a + b > 0)
puts("-1 is larger than 0"); // will not print
(These examples were intended for a 32 or 64 bit computer with 16 bit short.)