我正在尝试了解c ++应用程序中的整数提升和比较是如何工作的。
#include <cstdint>
int main(void)
{
uint32_t foo = 20;
uint8_t a = 2;
uint8_t b = 1;
uint8_t c = 5;
if(foo == b*c) {}
if(foo == a) {}
if(foo == a + c) {}
if(foo == a + b*c) {}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
仅对于最后一次比较,我得到一个编译器警告:“有符号和无符号整数表达式[-Wsign-compare]之间的比较”。
为什么这仅在最后一种情况下发生而在其他情况下不发生?