编译器警告(等级 4)C4389

“equality-operator”:带符号/无符号不匹配

==!= 运算涉及 signedunsigned 变量。 这可能会导致数据丢失。

注解

解决此警告的一种方法是在比较 signedunsigned 类型时强制转换这两种类型中的一种。

示例

以下示例生成 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;
}

另请参阅

编译器警告 C4018
编译器警告(等级 4)C4388