Condividi tramite


Avviso del compilatore (livello 4) C4706

assegnazione all'interno di un'espressione condizionale

Il valore del test di un'espressione condizionale è il risultato di un'assegnazione.

Un'assegnazione dispone di un valore, collocato a sinistra dell'assegnazione, che può essere utilizzato in un'altra espressione, anche di test.

Nell'esempio seguente viene generato l'errore C4706:

// C4706a.cpp
// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if ( a  = b ) // C4706
   {
   }
}

L'avviso viene generato anche se si raddoppiano le parentesi che racchiudono la condizione del test:

// C4706b.cpp
// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if ( ( a  =  b ) ) // C4706
   {
   }
}

Se si intende eseguire il test di una relazione e non effettuare un'assegnazione, utilizzare l'operatore ==. Nelle righe seguenti, ad esempio, viene verificato se a e b sono uguali:

// C4706c.cpp
// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if ( a == b )
   {
   }
}

Se si desidera che il valore del test sia il risultato di un'assegnazione, assicurarsi che quest'ultima non sia zero né null. Nel codice seguente, ad esempio, l'avviso non viene generato:

// C4706d.cpp
// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if ( ( a = b ) != 0 )
   {
   }
}