Operador Unsigned em C
Nesta aula, nós vamos aprender mais um operador na linguagem de programação C, o operador “unsigned” e, basicamente, esse operador, significa número sem sinal.
Uma variável, por exemplo, do tipo inteiro, a gente pode armazenar um número negativo ou um número positivo, mas a gente pode utilizar o operador unsigned para armazenar um número sem sinal, ou seja, quando o sinal não importa, não faz sentido falar em número negativo ou positivo.
Então, vamos ver aqui algumas situações e alguns exemplos.
Como eu mencionei, em um número inteiro, nós temos um intervalo, por exemplo, em uma variável do tipo int, nós conseguimos armazenar números entre este intervalo.
Perceba que é um intervalo bastante longo, menos dois bilhões cento e quarenta e sete milhões quatrocentos e oitenta e três mil seiscentos e quarenta e oito, até dois bilhões cento e quarenta e sete milhões quatrocentos e oitenta e três mil seiscentos e quarenta e sete, isso para o número do tipo
inteiro, tipo int.
Se a gente utilizar o operador unsigned, perceba que ele vem à esquerda do tipo da variável, nós estamos dizendo que este valor, armazenado nesta variável, não terá sinal, ou seja, o sinal não importa; então será considerado apenas valores de zero para a direita.
Perceba, de zero para a direita, como se fossem apenas números positivos.Mas, matematicamente falando, a gente diz que são números sem sinal.
Neste caso, perceba que a gente quase duplica o limite de números que a gente pode armazenar na nossa variável, porém apenas para a direita.
Olha só, ao utilizar o operador unsigned, a gente desconsidera todo o intervalo de números negativos; o nosso intervalo agora vai de zero até quatro bilhões duzentos e noventa e quatro milhões novecentos e sessenta e sete mil duzentos e noventa e cinco; então perceba que a gente consegue armazenar números entre este intervalo, uma variável desse tipo não aceita mais números negativos.
Vamos ver alguns exemplos de utilização de um unsigned?
Olha só, temos aqui alguns exemplos, e aí eu trouxe três exemplos aqui.
Perceba que a gente pode usar o unsigned apenas com o tempo inteiro e aí a gente vai usar o formatador de tipo por cento u, perceba que esse u, ele vem daqui; nós também podemos utilizar o unsigned com o operador short, e perceba que a gente está combinando dois operadores, eu estou dizendo aqui que eu vou ter um número inteiro, pequeno e sem sinal, a gente pode fazer isso.
E aí a gente vai usar o formador de tipo por cento hu; e a gente também pode utilizar com o operador long, então, olha só, eu vou ter um inteiro, longo e sem sinal.
Nesse caso, a gente vai utilizar o por cento lu.
Vamos ver um exemplo lá no Code Blocks funcionando?
Eu tenho aqui um exemplo bastante simples na nossa função main, e aí perceba que eu tenho aqui as variáveis x, y e z.
X é apenas unsigned int, y é um inteiro pequeno sem sinal (unsigned short), e z é um inteiro longo sem sinal (unsigned long) e aqui nos printf, linhas nove, dez e onze, eu estou imprimindo esses valores: o valor de x por cento u, o valor de y por cento hu, e o valor de z por cento lu.
Ao compilar e executar esse programa, perceba que a gente tem, corretamente impresso aqui no terminal, os valores de cada uma das variáveis.