Aviso do compilador (nível 4, desativado) C4388
'token': incompatibilidade assinada/não assinada
Usar o operador de token para comparar um número signed
e um número maior unsigned
exigiu que o compilador convertesse o valor de signed
no tipo maior unsigned
.
Comentários
Uma maneira de corrigir esse aviso é converter um dos dois tipos ao comparar os tipos signed
e os tipos maiores unsigned
.
Esse aviso está desativado por padrão. Você pode usar /Wall ou /w44388
para habilitá-lo na linha de comando como um aviso de nível 4. Ou então use #pragma warning(default:4388)
no arquivo de origem. Para obter mais informações, confira Avisos do compilador desativados por padrão.
Exemplo
Este exemplo gera C4388 e mostra como corrigi-lo:
// C4388.cpp
// compile with: cl /EHsc /W4 C4388.cpp
#pragma warning(default: 4388)
int main() {
unsigned long long uc = 0;
int c = 0;
unsigned long long c2 = c; // implicit conversion
if (uc < c) // C4388
uc = 0;
if (uc < (unsigned long long)(c)) // OK
uc = 0;
if (uc < c2) // Also OK
uc = 0;
}
Confira também
Aviso do compilador (nível 3) C4018
Aviso do compilador (nível 4) C4389