小编Ral*_*alf的帖子

解释整数与促销的比较

我正在尝试了解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]之间的比较”。

为什么这仅在最后一种情况下发生而在其他情况下不发生?

c++ integer-promotion

13
推荐指数
1
解决办法
236
查看次数

标签 统计

c++ ×1

integer-promotion ×1