Tipos Com ou Sem Sinal

Um tipo inteiro sem sinal pode representar apenas números positivos e zero. Um tipo com sinal pode representar tanto números positivos quanto negativos, em um intervalo distribuído quase igualmente em ambos os lados do zero. Por exemplo, unsigned char armazena números de 0 a 255 (na maioria dos computadores), enquanto signed char armazena números de -128 a 127. Cada um desses tipos possui 256 valores possíveis, já que ambos ocupam 8 bits.

Escreva signed ou unsigned antes da palavra-chave do tipo para especificar se o tipo é com ou sem sinal. No entanto, os tipos inteiros diferentes de char são, por padrão, com sinal; com eles, signed é um termo redundante.

O char simples pode ser com sinal ou sem sinal; isso depende do compilador, da máquina em uso e do sistema operacional.

Em muitos programas, não faz diferença se char é com ou sem sinal. Quando isso for relevante, não deixe ao acaso; escreva explicitamente signed char ou unsigned char.


Nota pessoal de Richard Stallman: Uma vez comendo com hackers em um restaurante de peixes, pedi um prato chamado Arctic Char. Quando minha refeição chegou, notei que o chef não a havia assinado. Então reclamei: "Este char está sem sinal—eu queria um char com sinal!" Ou, melhor, teria dito isso se tivesse pensado rápido o suficiente.

A piada acima funciona em inglês porque, em inglês, "signed" também significa "assinado" e no mundo da gastronomia existem os pratos assinados, de chefs famosos/as, etc.

Atualizado