signed e unsigned
Estes são manipuladores de sinal. Você pode dizer que uma variável inteira tem sinal:
signed int i ;
Ou não tem sinal:
unsigned int j ;
Em um sistema (hardware, sistema operacional e compilador) no qual o int seja de 16 bits, a variável i poderá armazenar de -32768 a 32767, e a variável j poderá armazenar de 0 a 65535. A quantidade de valores possíveis nos dois casos é igual, se pode representar números negativos ou não é a diferença.
Variáveis unsigned são boas para índices de arrays (vetores), matrizes etc, e para casos que se sabe que não serão armazenados números negativos.
As variáveis int são signed, por definição, mas o char parece depender do sistema. Já vi sendo signed e unsigned. Neste caso, quando usar como índice de array com mais de 127 itens, ou os valores a serem armazenados podem passar de 127 (e claro, menor do que 256), deve-se usar unsigned char.
Nota: Só se aplica nos tipos inteiros, e não nos de ponto flutuante, como float e double.
short e long
Estes são modificadores de tamanho. O short diz que o inteiro é de 16 bits, independente da arquitetura do processador (processadores de 8, 16, 32 ou 64 bits), e o long diz que é de 32 bits. O int pode variar segundo a arquitetura do processador, mas em todos os casos que vi eram de 16 e 32 bits.
Atualmente é comum existirem inteiros de 64 bits, e eles são necessários para vários usos. Para não criar uma nova palavra reservada, que pode, por algum azar, coincidir com o nome de alguma variável e impedir que um programa compile de primeira, então se usa long long para definir um inteiro de 64 bits.
Alguns processadores também tem um número de ponto flutuante de tamanho maior que o de 64 bits do double, então nestes casos se usa long double.
Abreviações
Existem algumas abreviações possíveis, como short int pode ser abreviado para short, long int para long, unsigned int para unsigned, unsigned long int para unsigned long etc. Em suma, quando não se informa se é int o char, é assumido que é int.
Exemplo de definições
Abaixo tem um amplo exemplo de definições com a maioria, se não todas, as possibilidades, de definições de inteiros. Ainda tem a definição de long double.
main()
{
char c ;
signed char cs ;
unsigned char cu ;
int i ;
signed int iS ;
unsigned int iU ;
signed S ;
unsigned U ;
short int is ;
short s ;
long int il ;
long l ;
long long int ill ;
long long ll ;
signed short int isS ;
unsigned short int isU ;
signed short sS ;
unsigned short sU ;
signed long int ilS ;
unsigned long int ilU ;
signed long lS ;
unsigned long lU ;
signed long long int illS ;
unsigned long long int illU ;
signed long long llS ;
unsigned long long llU ;
short signed int isS_ ;
short unsigned int isU_ ;
short signed sS_ ;
short unsigned sU_ ;
long signed int ilS_ ;
long unsigned int ilU_ ;
long signed lS_ ;
long unsigned lU_ ;
long long signed int illS_ ;
long long unsigned int illU_ ;
long long signed llS_ ;
long long unsigned llU_ ;
float f ;
double d ;
long double dl ;
/* Isto dá erro,provando que char não é modificador de int.
A definição char é um tipo pode si próprio.
char int ci ;
int char ic ;
*/
}
Nenhum comentário:
Postar um comentário