GCC не выдает предупреждения при использовании == op со знаковой переменной и беззнаковым литералом

Почему GCC выдает предупреждения только для ситуаций 1 и 3, а не 2 в приведенном ниже коде?

Я компилирую с флагами -Wall и -g.

int main() {

    unsigned int ui = 4;
    int si = 6;

    if (si == ui ) { // Warning comparison b/w signed and unsigned
        printf("xxxx");
    }

    if (si == 2U ) { // No Warning --- WHY ???
        printf("xxxx");
    }

    if (si > 2U ) { // Warning comparison b/w signed and unsigned
        printf("xxxx");
    }

    return 0;
}
8
задан Ryan Li 17 December 2010 в 14:01
поделиться