Você está na página 1de 16

Prof. Daniel Ponte, E.E.

daniel@ifpi.edu.br

1
Sumário
▪ Atribuição de valores binário, hexadecimal e octal
▪ Operador sizeof( )
▪ Operação de conversão ou cast em C
▪ Escopo de variável: local e global
▪ Modificadores de armazenamento: extern, static e register.
▪ Modificador volátile
▪ Constantes: const
▪ Enumerações 2
Atribuição de Valores Hexadecimais e Octais
• Binário – Inicia valor com zero(0) e caractere “b” : 0b
int reistrador = 0b1010; //Valor 10 na base 10

• Hexadecimal – Inicia valor 0x

int porta = 0x3F; //Valor 63 em decimal

int reg = 0x32; // Valor 50 em decimal

• Octal – Inicia valor com zero (0)

int porta2 = 035; //Valor 29 em decimal

int reg2 = 032; // Valor 26 em decimal


Operador sizeof( )
• sizeof( ) retorna o número de bytes ocupados por um
tipo de dado ou variável.

printf(" Número de bytes de um int %lu\n", sizeof(int));

int valor = 100;


int nbytes = sizeof(valor);
printf(" Variável valor possui %d Bytes", nbytes);
Operação de Conversão ou Cast
• Implícita
-Conversão realizada pelo compilador naturalmente.

Ex. Converter tipo int em um long (int ->long)


Cuidado !!
int x = 1000 int z = 1000;
long y = x; char c = z;

• Explícita
double valor3 = 1000.3;
int const3 = (int)valor3;
Variável Local (Escopo Local)
#include <stdio.h> Escopo local
✓ Automaticamente excluídas no final do bloco
int main( ){ ✓ Devem ser declaradas no início de cada bloco

double nota1 = 10.0;


double nota2 = 8.0;
Escopo 1
double med = media( );
printf("Média %f",media( ));

}
double media(){
int valor =10;
Escopo 2
return (nota1+nota2)/2;
} Variáveis não declarada nesse escopo!
Variável Global (Escopo Global)
#include <stdio.h>
double nota1; Escopo global
double nota2; ✓ Ocupam memória durante toda a execução
✓ Devem ser declaradas fora dos blocos de código, no
int main( ){ início do arquivo

nota1 = 10.0; Escopo 1


nota2 = 8.0;

double med = media( );


printf("Média %f",media( ));
}
double media(){
return (nota1+nota2)/2; Escopo 2
}
Modificadores de Armazenamento
• extern
– Resolve o conflito de variáveis e constantes globais entre diferentes programas em C
– Defina no primeiro programa sem a instrução extern, e com ela nos demais
programas;
Variáveis Globais
mesmo nome

int exter_var;
extern int exter_var; Modificador extern:
int main(void) { int quadrado ( int x ) ✓ Definir variável definitiva
int k,n; { ✓ Evita escrever valores errados
exter_var =4; int y; ✓ Evita erros de compilação (mesmo
k = quadrado(n); y = x * x + exter_var; nome)
n = quadrado(5);
return(x);
}
}
Projeto1.c Calcula.c

Meu_Projeto
Modificadores de Armazenamento
• static

– Variáveis declaradas com o modificador “static”


mantém seus valores entre diferentes chamadas de
uma mesma função;

– Variáveis globais possuem o comportamento de


“static” que mantém e compartilham seu valor dentro
do mesmo arquivo (código-fonte)
#include <stdio.h>
void minhaFuncaoEstatica(void);
int main()
{

minhaFuncaoEstatica();
minhaFuncaoEstatica();
minhaFuncaoEstatica();
return 0;
}

void minhaFuncaoEstatica(){

int varNaoEstatica =10;


int static varEstatica =10;
Resposta:
varNaoEstatica = varNaoEstatica +1; Var não estática 11
varEstatica = varEstatica +1; Var estática 11
Var não estática 11
printf("Var não estática %d \n" , varNaoEstatica); Var estática 12
printf("Var estática %d \n", varEstatica); Var não estática 11
} Var estática 13
Modificadores de Armazenamento
• register
– Armazena a variável no mecanismo de acesso mais rápido
disponível (registradores ...)
#include <stdio.h>
int main()
{

int register varReg =10;


return 0;
}
Modificador volatile
–Qualificador informa ao compilador que a variável pode
ser alterado de maneira não explícita.

– Variável volátil não sofre otimização durante compilação:


otimização de leitura e escrita são desabilitadas;
int main(){

volatile int tempo;

}
Modificador volatile

int main(){ tempo é uma variável que pode ser


alterada de maneira não especificada
pelo programa.
int volatile tempo;

1 0 1 1 0 0 0 0 Rotina executada independente do programa

Rotina de Atualização Relógio


:
->Atualiza hora no endereço variável
1 0 1 1 0 0 0 1 :
Constante: const
• const
– Valores constantes que não podem ser alterados durante a
execução do programa
– Não pode ser inicializadas em separado

const double PI = 3.14; // Constante do tipo int

int const PI;


PI =3.15;
Constante em Enumerações
▪ Grupo de valores que uma variável pode assumir
▪ Valores possuem identificadores

Criando Enumerações:

▪ Sintaxe: enum nome {valores}

Exemplo:
enum EstacoesDoAno {verao, outono, inverno, primavera};
Constante em Enumerações
enum EstacoesDoAno { verao, outono, inverno}
int estacao = verao;
printf("Estamos na estação %d\n", estacao);
Estamos na estação 0

enum EstacoesDoAno {verao=1, outono, inverno};


int estacao = verao;
printf("Estamos na estação %d\n", estacao);
Estamos na estação 1

enum EstacoesDoAno est;


est = outono;
printf("Estamos na estação %d\n", est);
Estamos na estação 2

Você também pode gostar