编译器警告(等级 4)C4389
“equality-operator”:带符号/无符号不匹配
==
或 !=
运算涉及 signed
和 unsigned
变量。 这可能会导致数据丢失。
注解
解决此警告的一种方法是在比较 signed
和 unsigned
类型时强制转换这两种类型中的一种。
示例
以下示例生成 C4389:
// C4389.cpp
// compile with: cl /EHsc /W4 C4389.cpp
int main()
{
int a = 9;
unsigned int b = 10;
int result = 0;
if (a == b) // C4389
result = 1;
else
result = 2;
if (unsigned(a) == b) // OK
result = 3;
else
result = 4;
return result;
}