次の方法で共有


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

条件式の比較値は、代入の結果になっています。

条件式の比較値が、代入の結果になっています。

代入式には値 (代入の左辺値) があり、この値は比較式などのほかの式で使用できます。

次の例では C4706 警告が生成されます。

// C4706a.cpp
// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if ( a  = b ) // C4706
   {
   }
}

この警告は、比較条件をかっこで二重に囲んだ場合にも発生します。

// C4706b.cpp
// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if ( ( a  =  b ) ) // C4706
   {
   }
}

代入ではなく関係の比較が目的の場合は、== 演算子を使用します。たとえば、a と b が等しいかどうかを比較するには、次のようにします。

// C4706c.cpp
// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if ( a == b )
   {
   }
}

比較値を代入結果にする場合は、代入が 0 以外、または null でないことを確認します。たとえば、次のコードではこの警告は生成されません。

// C4706d.cpp
// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if ( ( a = b ) != 0 )
   {
   }
}