我有以下 C 代码:
unsigned int a;
unsigned char b, c;
void test(void) {
if (a < b)
return;
if (a < (b ? b : c))
return;
}
当我编译它时(使用 Microsoft cl
,来自 MS SDK 7,-W3
警告级别),第二个比较发出警告:C4018,有符号/无符号不匹配。第一次比较不会发出警告。
我已经检查了条件运算符的 MS 文档,他们说如果两个操作数属于同一类型,则结果将属于同一类型,因此它应该作为第一个比较。我错过了什么吗?
UPD:经过测试,gcc -Wall -Wextra -pedantic
没有收到任何警告。