コンパイラの警告 (レベル 4) C4389

'equality-operator' : 符号付き/符号なしが一致しません

== または != 演算に signed および unsigned 変数が関係しています。 この結果、データが失われる可能性があります。

解説

この警告を修正する 1 つの方法は、signed 型と unsigned 型を比較するときに、2 つの型の一方をキャストする場合です。

次の例では 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