Esse modificador é padrão para qualquer tipo de dado numérico utilizado, não sendo necessário a
declaração. Seu objetivo é fazer com que um tipo de dado que utilize o signed tenha sua representação
numérica com sinalização positiva ou negativa. Essa sinalização é feita com a utilização do bit
mais significativo com sinal.
Tab. 1: Sinalização em um tipo char
bit 7 |
bit 6 |
bit 5 |
bit 4 |
bit 3 |
bit 2 |
bit 1 |
bit 0 |
1 |
- |
- |
- |
- |
- |
- |
- |
Quando um modificador de sinalização é utilizado, internamente, caso o valor no bit 7 seja 0, o número
em questão é não-sinalizado, caso contrário, o número é sinalizado.
O modificador signed não pode ser utilizado em conjunto com os tipos primitivos double e
float. Um erro de compilação será gerado caso a tentativa de uso seja feita.
Sintaxe
signed tipo_dado nome_variavel;
Onde
tipo_dado: tipo de dado numérico. Exceto float e double.
Exemplo 1
#include <stdio.h>
void main(void)
{
signed int a = 0xFFFFFFFF;
signed char b = 0x80;
printf("%d %d", a,b);
}
Saída
-1 -128
A faixa de valores suportado na variável b declarada no exemplo acima é de -128 até 127.
Essa faixa de valores já havia sido mencionada anteriormente ao ser discutido sobre o tipo char.
A variável a por sua vez, tem a faixa de valores entre −2.147.483.647 e +2,147,483,647.
Exemplo 2
#include <stdio.h>
void main(void)
{
signed int a = 100;
signed char b = 0x7F;
printf("%d %c", a,b);
}
Saída
100 127