Partilhar via


Aviso do compilador (nível 4) C4706

Atribuição usada como condição

O valor de teste em uma expressão condicional é o 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:

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

Suprima o aviso com a expressão (()). Por exemplo:

// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if ((a = b)) // No warning
   {
   }
}

Se a sua intenção é testar uma relação, não fazer uma atribuição, use o operador ==. Por exemplo, o seguinte testa se a e b são iguais:

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

Se pretendes tornar o teu valor de teste o resultado de uma atribuição, assegura-te de que a atribuição seja diferente de zero ou não nula. Por exemplo, o código a seguir não gera esse aviso:

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