Condividi tramite


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