ExpertiDict

C · Avançado · Português · Técnico

promoção de inteiros

/pɾo.moˈsɐ̃w dʒi ĩˈtej.ɾus/substantivo

Regra pela qual tipos menores que int, como char e short, são convertidos para int antes de operações aritméticas. O resultado de a + b com dois chars é int, não char.

Onde usar

Explica surpresas como ~(unsigned char)0 virar um valor negativo e comparações inesperadas ao mexer em bytes. Em código de protocolos, converta de volta explicitamente.

Em código

unsigned char a = 200, b = 100;
int soma = a + b; // 300, sem truncar
unsigned char c = a + b; // 44
printf("%d %d\n", soma, c);

Exemplos

Por causa da promoção de inteiros, a soma de dois bytes não estoura em 255.

Essa comparação falha por causa da promoção de inteiros de um unsigned char.

Cuidado

Deslocar um uint8_t por muitos bits sem converter antes: ele vira int e o deslocamento pode estourar o bit de sinal.

Sinônimos

integer promotion

Veja também

Todos os termos de C