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