Aviso do compilador (nível 3) C4018
'token': incompatibilidade assinada/não assinada
Usar o operador de token para comparar os números signed
e unsigned
que exigiram que o compilador convertesse o valor signed
paraunsigned
.
Comentários
Uma maneira de corrigir esse aviso é se você lançar um dos dois tipos quando comparar os tipos signed
e unsigned
.
Exemplo
Este exemplo gera C4018 e mostra como corrigi-lo:
// C4018.cpp
// compile with: cl /EHsc /W4 C4018.cpp
int main() {
unsigned int uc = 0;
int c = 0;
unsigned int c2 = c; // implicit conversion
if (uc < c) // C4018
uc = 0;
if (uc < unsigned(c)) // OK
uc = 0;
if (uc < c2) // Also OK
uc = 0;
}
Confira também
Aviso do compilador (nível 4) C4388
Aviso do compilador (nível 4) C4389