Obs.: O uso do
short e
long não necessariamente vai modificar a variável, dependendo do sistema para isso.
int main(void) {
short int var1 = 0;
long double var2 = 1.0e+300;
}
Modificador de atributo - const
O C possui 5 modificadores de atributo:
const,
volatile,
extern,
static e
register. Vamos estudar agora o modificador
const, que é muito utilizado na linguagem em C. Os
extern e
static precisam de outros conceitos que vamos estudar depois, e para eles não ficarem sozinhos vamos deixar para estudar junto o
volatile e
register.
- const - Variaveis com esse atributo não podem ser modificadas.
O const é ideal para criar constantes, se tentamos modificar uma variável constante vai dar erro.
int main(void) {
//Cria uma constante
const float PI = 3.14159265359;
//Erro
PI = 3.14;
}
Declaração de variáveis
De uma maneira bem genérica o jeito de declara variáveis no C:
<Modificadores> <Tipo> <Nome da variável>
Podemos ou não atribuir um valor na inicialização, caso não atribuímos a variável é inicializa com LIXO. Então é uma boa pratica de programação sempre inicializar as variáveis.
int var1 = 123;
long int var2 = 456;
const int var3 = 768;
const unsigned long int var4 = 123456;
double var5 = 1.0;
float var6;
Podemos também declarar variáveis usando só modificadores, elas automaticamente vão ser do tipo
int
int var1 = 123;
long var2 = 456;
const var3 = 768;
const unsigned long var4 = 123456;
double var5 = 1.0;
float var6;
O operador sizeof()
Como foi dito o tamanho da variável depende do sistema. Para saber o tamanho que um tipo ocupa na memoria basta usar o operador sizeof, passando como argumento o tipo ou o modificador e o tipo
#include <stdio.h>
int main(){
printf("tamanho do short int %lu\n",sizeof(short int));
printf("tamanho do int %lu\n",sizeof(int));
printf("tamanho do long int %lu\n",sizeof(long int));
//Mesmo que o tamanho do int
printf("tamanho do unsigned int %lu\n",sizeof(unsigned int));
}
Saída:
tamanho do short int 2
tamanho do int 4
tamanho do long int 8
tamanho do unsigned int 4
|
Limites
Muitas vezes precisamos saber o intervalo que a variável é definida. Existem um jeito fácil de saber isso em C, usando duas bibliotecas
<limits.h> (possui definições para o tipo inteiro:
char e
int) e
<float.h> (possui definições para o tipo ponto flutuante:
float e
double).
O MAX e MIN para os inteiros, representa o seu intervalo, já para o ponto flutuante, representa o menor valor antes de ser zero e o maior valor antes de ser infinito.
Nome | Descrição |
CHAR_MIN | Menor valor de um char |
CHAR_MAX | Maior valor de um char |
INT_MIN | Menor valor de um int |
INT_MAX | Maior valor de um int |
FLT_MIN | Menor valor de um float |
FLT_MAX | Maior valor de um float |
DBL_MIN | Menor valor de um double |
DBL_MAX | Maior valor de um double |
#include <stdio.h>
#include <limits.h>
#include <float.h>
int main(){
printf("char min: %i max: %i\n",CHAR_MIN,CHAR_MAX);
printf("int min: %i max: %i\n",INT_MIN,INT_MAX);
printf("float min: %g max: %g\n",FLT_MIN,FLT_MAX);
printf("double min: %g max: %g\n",DBL_MIN,DBL_MAX);
return 0;
}
Saída:
char min: -128 max: 127
int min: -2147483648 max: 2147483647
float min: 1.17549e-38 max: 3.40282e+38
double min: 2.22507e-308 max: 1.79769e+308 |
Existe outras definições nas bibliotecas, podemos ver outras no programa 2 da na atividade.
Atividades
A ideia dessa atividade é conhecer um pouco do ambiente de desenvolvimento.
1. Execute o programa abaixo para saber o tamanho de cada tipo.
#include <stdio.h>
int main(void){
printf("tamanho char: %lu\n", sizeof(char));
printf("tamanho short: %lu\n", sizeof(short));
printf("tamanho int: %lu\n", sizeof(int));
printf("tamanho long: %lu\n", sizeof(long));
printf("tamanho long long: %lu\n", sizeof(long long));
printf("tamanho float: %lu\n", sizeof(float));
printf("tamanho double: %lu\n", sizeof(double));
printf("tamanho long double: %lu\n", sizeof(long double));
return 0;
}
2. Execute o programa abaixo para saber o intervalo de cada tipo
#include <stdio.h>
#include <limits.h>
#include <float.h>
int main(void){
printf("char min: %i max: %i\n",CHAR_MIN,CHAR_MAX);
printf("unsigned char min: 0 max: %i\n",UCHAR_MAX);
printf("short min: %i max: %i\n",SHRT_MIN,SHRT_MAX);
printf("unsigned short min: 0 max: %i\n",USHRT_MAX);
printf("int min: %i max: %i\n",INT_MIN,INT_MAX);
printf("unsigned int min: 0 max: %u\n",UINT_MAX);
printf("long min: %li max: %li\n",LONG_MIN,LONG_MAX);
printf("unsigned long min: 0 max: %lu\n",ULONG_MAX);
printf("long long min: %lli max: %lli\n",LLONG_MIN,LLONG_MAX);
printf("unsigned long long min: 0 max: %llu\n",ULLONG_MAX);
printf("float min: %g max: %g\n",FLT_MIN,FLT_MAX);
printf("double min: %g max: %g\n",DBL_MIN,DBL_MAX);
printf("long double min: %Lg max: %Lg\n",LDBL_MIN,LDBL_MAX);
return 0;
}