Freigeben über


Compilerwarnung (Ebene 4) C4706

Zuweisung innerhalb eines bedingten Ausdrucks

Der Testwert in einem bedingten Ausdruck war das Ergebnis einer Zuordnung.

Eine Zuordnung weist einen Wert (den Wert auf der linken Seite der Zuordnung) auf, der legal in einem anderen Ausdruck verwendet werden kann, einschließlich eines Testausdrucks.

Im folgenden Beispiel wird C4706 generiert:

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

Die Warnung tritt auch dann auf, wenn Sie die Klammern um die Testbedingung verdoppeln:

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

Wenn Sie beabsichtigen, eine Beziehung zu testen und keine Zuordnung vorzunehmen, verwenden Sie den == Operator. Die folgende Zeile prüft beispielsweise, ob a und b gleich sind:

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

Wenn Sie den Testwert als Ergebnis einer Zuordnung festlegen möchten, testen Sie, ob die Zuordnung ungleich Null oder nicht null ist. Der folgende Code generiert z. B. diese Warnung nicht:

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