Avviso del compilatore (livello 4) C4706
assegnazione all'interno dell'espressione condizionale
Il valore di test in un'espressione condizionale è il risultato di un'assegnazione.
Un'assegnazione ha un valore (il valore a sinistra dell'assegnazione) che può essere usato legalmente in un'altra espressione, inclusa un'espressione di test.
L'esempio seguente genera l'errore C4706:
// C4706a.cpp
// compile with: /W4
int main()
{
int a = 0, b = 0;
if ( a = b ) // C4706
{
}
}
L'avviso si verificherà anche se si raddoppieranno le parentesi intorno alla condizione di test:
// C4706b.cpp
// compile with: /W4
int main()
{
int a = 0, b = 0;
if ( ( a = b ) ) // C4706
{
}
}
Se si intende testare una relazione e non eseguire un'assegnazione, usare l'operatore ==
. Ad esempio, la riga seguente verifica se a e b sono uguali:
// C4706c.cpp
// compile with: /W4
int main()
{
int a = 0, b = 0;
if ( a == b )
{
}
}
Se si intende impostare il valore del test come risultato di un'assegnazione, verificare che l'assegnazione sia diversa da zero o non null. Ad esempio, il codice seguente non genererà questo avviso:
// C4706d.cpp
// compile with: /W4
int main()
{
int a = 0, b = 0;
if ( ( a = b ) != 0 )
{
}
}