Aviso do Compilador (nível 4) C4389
'equality-operator' : incompatibilidade assinada/não assinada
Uma operação ==
ou !=
envolveu as variáveis signed
e unsigned
. Isso pode resultar em perda de dados.
Comentários
Uma maneira de corrigir esse aviso é se você lançar um dos dois tipos quando comparar os tipos signed
e unsigned
.
Exemplo
O seguinte exemplo gera o C4389:
// C4389.cpp
// compile with: cl /EHsc /W4 C4389.cpp
int main()
{
int a = 9;
unsigned int b = 10;
int result = 0;
if (a == b) // C4389
result = 1;
else
result = 2;
if (unsigned(a) == b) // OK
result = 3;
else
result = 4;
return result;
}
Confira também
Aviso do compilador C4018
Aviso do compilador (nível 4) C4388