Freigeben über


Compilerwarnung (Stufe 4) C4706

Zuweisung in bedingtem Ausdruck

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

Eine Zuweisung hat einen Wert (den Wert auf der linken Seite einer Zuweisung), der auch in einem anderen Ausdruck verwendet werden kann, z. B. in einem Testausdruck.

Im folgenden Beispiel wird C4706 generiert:

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

Die Warnung wird selbst dann ausgegeben, wenn Sie die Testbedingung in doppelte Klammern setzen:

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

Wenn lediglich eine Beziehung getestet werden und keine Zuweisung erfolgen soll, verwenden Sie den Operator ==.In der folgenden Zeile wird getestet, ob "a" und "b" gleich sind:

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

Falls der Testwert zum Ergebnis einer Zuweisung werden soll, sollten Sie die Zuweisung auch darauf testen, dass sie ungleich 0 oder nicht NULL ist.Im folgenden Code wird diese Warnung z. B. nicht generiert:

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