C · Intermediário · Português · Técnico
tipo sem sinal
Tipo inteiro declarado com unsigned, que só representa valores não negativos e usa todos os bits para a magnitude. Seu overflow é definido: o valor dá a volta módulo 2^N.
Onde usar
size_t e índices de array são unsigned. O clássico for (unsigned i = n; i >= 0; i--) nunca termina, porque i nunca fica negativo.
Em código
unsigned u = 0;
u--;
printf("%u\n", u); // 32 bits: 4294967295
int s = -1;
puts(s < 1u ? "menor" : "maior"); // maiorExemplos
Esse laço nunca para porque o índice é um tipo sem sinal.
Comparar int com tipo sem sinal dá resultado surpreendente com valores negativos.
Cuidado
Misturar signed e unsigned em comparações: o valor com sinal é convertido para unsigned, e -1 vira um número enorme.
Sinônimos
unsigned
Antônimos
tipo com sinal