Compartilhar via


aviso do compilador (nível 4) C4706

Mensagem de erro

atribuição dentro de expressão condicional

O valor de teste em uma expressão condicional foi resultado de uma atribuição.

Uma atribuição tem um valor (o valor no lado esquerdo da atribuição) que pode ser usado legalmente em outra expressão, incluindo uma expressão de teste.

O exemplo a seguir gera C4706:

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

O aviso ocorrerá mesmo se você duplicar os entre parênteses a condição de teste:

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

Se sua intenção for para testar uma relação e não para fazer uma atribuição, use o == operador. Por exemplo, a seguinte linha testes se um e b são iguais:

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

Se você pretende fazer o teste de resultado de uma atribuição de valor, teste para certificar-se que a atribuição é diferente de zero ou não nulo.Por exemplo, o código a seguir não irá gerar este aviso:

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