Condividi tramite


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