Avviso del compilatore (livello 4) C4706
assegnazione usata come condizione
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:
// compile with: /W4
int main()
{
int a = 0, b = 0;
if (a = b) // C4706
{
}
}
Sopprimere l'avviso con l'espressione ((
))
. Per esempio:
// compile with: /W4
int main()
{
int a = 0, b = 0;
if ((a = b)) // No warning
{
}
}
Se si intende testare una relazione, non effettuare un'assegnazione, usare l'operatore ==
. Ad esempio, i seguenti test verificano se a e b sono uguali:
// compile with: /W4
int main()
{
int a = 0, b = 0;
if (a == b)
{
}
}
Se intendi rendere il valore del test il risultato di un'assegnazione, verifica che l'assegnazione sia diversa da zero o non nulla. Ad esempio, il codice seguente non genera questo avviso:
// compile with: /W4
int main()
{
int a = 0, b = 0;
if ((a = b) != 0)
{
}
}