Sdílet prostřednictvím


Upozornění kompilátoru (úroveň 4) C4706

přiřazení v rámci podmíněného výrazu

Testovací hodnota v podmíněném výrazu byla výsledkem přiřazení.

Přiřazení má hodnotu (hodnotu na levé straně přiřazení), kterou lze použít v jiném výrazu, včetně testovacího výrazu.

Následující ukázka vygeneruje C4706:

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

K upozornění dojde i v případě, že kolem testovací podmínky zdvojnásobíte závorky:

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

Pokud vaším záměrem je otestovat relaci, a ne provést přiřazení, použijte == operátor. Například následující řádek testuje, zda a b jsou stejné:

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

Pokud máte v úmyslu vytvořit testovací hodnotu jako výsledek přiřazení, otestujte, jestli je přiřazení nenulové nebo ne null. Například následující kód toto upozornění nevygeneruje:

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