为什么GCC只在下面的代码中警告情况1和3,而不是2?GCC在使用带有符号变量和无符号变量的== op时不会发出警告
我正在编译-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;
}
确实是`提升'为无符号,但当它的值小于2^31 - 1时没有区别。 – 2010-12-03 16:42:19