C · Avançado · Português · Técnico
conversão aritmética usual
Regras que levam os operandos de uma operação binária a um tipo comum antes do cálculo. Entre int e unsigned, o int vira sem sinal, mudando comparações.
Onde usar
Explica o bug de -1 < 1u ser falso: -1 vira um unsigned enorme. Aparece em comparações de índices com size_t e é o alvo do aviso -Wsign-compare.
Em código
#include <stdio.h>
int main(void) {
int a = -1;
unsigned b = 1;
if (a < b) puts("menor");
else puts("a vira unsigned: maior");
}Exemplos
A comparação deu falso por causa da conversão aritmética usual do int para unsigned.
Liga o -Wsign-compare para pegar essas conversões.
Cuidado
Misturar tipos com e sem sinal em comparações e subtrações achando que o sinal é preservado.
Sinônimos
usual arithmetic conversions