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 )
{
}
}