Я пытаюсь понять, как работает целочисленное продвижение и сравнение в приложении 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;
}
Только для последнего сравнения я получаю предупреждение компилятора: "сравнение между целочисленными выражениями со знаком и без знака [-Wsign-compare]".
Почему это происходит только в последнем случае, а не в других?