隐式类型提升规则

隐式类型提升规则

这篇文章是用来作为关于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位计算机。)


桃花长相依
浏览 538回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP