Os tipos Special-purpose usaram-se geralmente:
Tipo variável |
Descrição |
size_t |
tipo não assinado usado armazenando os tamanhos dos objetos nos bytes |
time_t |
usou-se armazenar resultados da função do tempo () |
clock_t |
usou-se armazenar resultados da função do pulso de disparo () |
LIMA |
usado para alcançar um córrego (geralmente uma lima ou um dispositivo) |
ptrdiff_t |
tipo assinado da diferença entre 2 ponteiros |
div_t |
usou-se armazenar resultados da função do div () |
ldiv_t |
usou-se armazenar resultados da função do ldiv () |
fpos_t |
usou-se prender a informação da posição da lima |
va_list |
usado na manipulação variável do argumento |
wchar_t |
tipo de caráter largo (usado para caráter prolongado - jogos) |
sig_atomic_t |
usado em alimentadores do sinal |
Jmp_buf |
usado para saltos non-local |
Para compreender mais melhor estas variáveis deixaram-nos fazer exame de um exemplo:
/* Programa para dizer a escala e o tamanho nos bytes da variável de C */
#include <stdio.h>
int main()
{
int a; /* tipo simples do inteiro */
long int b; /* tipo longo do inteiro */
short int c; /* tipo curto do inteiro */
unsigned int d; /* tipo do inteiro não assinado */
char e; /* tipo de caráter */
float f; /* tipo do ponto flutuando */
double g; /* ponto flutuando de precisão dobro */
a = 1023;
b = 2222;
c = 123;
d = 1234;
e = 'X';
f = 3.14159;
g = 3.1415926535898;
printf( "\nA char is %d bytes", sizeof( char ));
printf( "\nAn int is %d bytes", sizeof( int ));
printf( "\nA short is %d bytes", sizeof( short ));
printf( "\nA long is %d bytes", sizeof( long ));
printf( "\nAn unsigned char is %d bytes",
sizeof( unsigned char ));
printf( "\nAn unsigned int is %d bytes",
sizeof( unsigned int ));
printf( "\nAn unsigned short is %d bytes",
sizeof( unsigned short ));
printf( "\nAn unsigned long is %d bytes",
sizeof( unsigned long ));
printf( "\nA float is %d bytes", sizeof( float ));
printf( "\nA double is %d bytes\n", sizeof( double ));
printf("a = %d\n", a); /* decimal output */
printf("a = %o\n", a); /* octal output */
printf("a = %x\n", a); /* hexadecimal output */
printf("b = %ld\n", b); /* decimal long output */
printf("c = %d\n", c); /* decimal short output */
printf("d = %u\n", d); /* unsigned output */
printf("e = %c\n", e); /* character output */
printf("f = %f\n", f); /* floating output */
printf("g = %f\n", g); /* double float output */
printf("\n");
printf("a = %d\n", a); /* simple int output */
printf("a = %7d\n", a); /* use a field width of 7 */
printf("a = %-7d\n", a); /* left justify in
field of 7 */
c = 5;
d = 8;
printf("a = %*d\n", c, a); /* use a field width of 5*/
printf("a = %*d\n", d, a); /* use a field width of 8 */
printf("\n");
printf("f = %f\n", f); /* simple float output */
printf("f = %12f\n", f); /* use field width of 12 */
printf("f = %12.3f\n", f); /* use 3 decimal places */
printf("f = %12.5f\n", f); /* use 5 decimal places */
printf("f = %-12.5f\n", f); /* left justify in field */
return 0;
}
|