Logo Passei Direto
Buscar

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Dada a expressão
• Dada a expressão: a = 2 + (b = 3);
– 1ª coisa a ser feita é a atribuição da constante 3 a 
variável b.
– 2ª coisa a ser feita é a soma do conteúdo da 
variável b como o conteúdo da constante 2.
– Por último, atribui-se a variável a o resultado da 
expressão 2 + (b = 3).
O Bom Senso Recomenda
• Reescrever a expressão a = 2 + (b = 3);
• Em: 
– b = 3;
– a = 2 + b;
• Motivos:
– Legibilidade do código fonte.
– Redigibilidade do código fonte.
– Facilitar a manutenção do código fonte.
lvalue e rvalue
• O operando a esquerda (lvalue – leftvalue) do 
operador de atribuição (=) sempre se refere a 
uma posição de memória.
• O operando a direita (rvalue – rigthvalue) do 
operador de atribuição (=) sempre se refere a 
um valor.
• a = b + 1 = c = 2 + 5; // erro b+1 retorna um 
valor e não um lvalue.
Constantes
• Referem-se aos valores fixos existentes no 
texto do códigos fontes dos programas.
• São armazenados na memória durante a 
compilação (área de dados e área de código).
Constantes
• Constantes caractere.
• Constantes caractere de barra invertida.
• Constantes inteiras.
• Constantes inteiras octais e hexadecimais.
• Constantes de ponto flutuantes (reais).
– Constantes de precisão simples (float).
– Constantes de precisão dupla (double).
• Constante string.
Constantes Caractere
• Trata-se de caracteres entre aspas simples.
• ‘Z’, ‘9’, ‘%’
• unsigned char letra = ‘k’; 
• A posição de memória identificada por letra
possui uma sequênica de bits que representa o 
código ASCII do caractere minúsculo k. 
Constantes Caractere de Barra 
Invertida
• Constantes especiais para os caracteres de 
controle: beep, line feed, carriage return.
• Deve-se utilizar código de barra invertida no 
lugar do código ASCII equivalente para 
aumentar a portabilidade dos programas.
Constantes Caractere de Barra 
Invertida
Código Significado
\b Retrocesso (BS)
\f Alimentação do formulário (FF)
\n Nova linha (LF)
\r Retorno de carro (CR)
\t Tabulação (HT)
\” “
\’ ‘
\0 Nulo
\\ Barra invertida
\v Tabulação vertical (VT)
\a Alerta (beep)
\N Constante octal, onde N é uma constante em octal
\xN Constante hexadecimal, onde N é uma constante em hexadecimal
Constantes Inteiras
• Representada por números sem componentes 
fracionários.
• O tipo de uma constante inteira é o menor tipo 
de dado capaz de armazená-la.
– int, unsigned int, long int, unsigned long int
• A menos que a constante venha acompanhada do 
sufixo que indique o seu tipo:
– U – unsigned int
– L – long int
– UL – unsigned long int
Exemplos e Constantes Inteiras
Tipo Significado
int 1 123 31000 -234
long int 35000L -34L
unsigned int 10000U 977U 40000U
unsigned long int 23454000UL 3000000UL
Constantes Inteiras Octais e 
Hexadecimais
• Muitas vezes é mais prático trabalhar com 
constantes hexadecimais e octais.
• As constantes inteiras octais são precedidas por 0 
(zero).
– int a = 012 // a variável a recebe o valor decimal 10
• As constantes inteiras hexadecimais são precedidas 
por 0x.
– int b = 0xA; // a variável a recebe o valor hexadecimal 10
Constantes Reais (Ponto Flutuante)
• Possuem parte fracionária.
• Existem dois tipos:
– F – float
– L – long double
• Na falta de uma especificação assume-se que 
a constante é do tipo double.
Constantes Reais (Ponto Flutuante)
Tipo Significado
float 12.34F 45F 1e-2F -2e1F
double 12.34 45 1e-2 -2e1
long double 12.34LF 45LF 1e-2LF -2e1LF 
Constante String
• São as constantes formadas por um conjunto 
de caracteres e sempre entre aspas duplas (“).
• char codigo_disciplina*6+ = “DCC003”;
Conversão de Tipos
• Refere-se a situação em que variáveis de um 
tipo são misturadas com variáveis de outros 
tipos.
• Regra de conversão:
– O valor do lado direito (o lado da expressão) de 
uma atribuição é convertido no tipo do lado 
esquerdo (a variável destino).
Conversão de um tipo short int para 
um tipo char
• Perde-se os 8 bits mais significativos do tipo 
short int.
• short int numero = 259;
• char caractere = numero;
• numero = 00000001 00000011
• caractere = 00000011
Conversão de tipos
• Quando envolve caracteres e inteiros, os bits
mais significativos sempre são perdidos 
dependendo do tamanho do tipo do lado 
esquerdo da atribuição.
• A conversão de int em float, float em double
por exemplo, não aumentam a precisão. 
Apenas mudam a forma de representação.
Conversão de Tipos
Tipo destino Tipo da expressão Possível informação perdida
char unsigned char Se valor > 127, o destino é negativo
char short int Os 8 bits mais significativos
char unsigned short int Os 8 bits mais significativos
char int Os 24 bits mais significativos
char unsigned int Os 24 bits mais significativos
char long Int Os 24 bits mais significativos
char unsigned long int Os 24 bits mais significativos
int float A parte fracionária e até mais
int double A parte fracionária e até mais
float double Precisão, o resultado é arredondado
double long double Precisão, o resultado é arredondado
Operadores
• A linguagem C é rica em operadores.
• Dá mais ênfase a operadores que outras 
linguagens de programação.
• Existem operadores:
– Aritméticos.
– Relacionais.
– Operadores de bits.
• Além de outros operadores para tarefas 
particulares.
Operadores Aritméticos
Operador Descrição
- Subtração
+ Adição
/ Divisão
* Multiplicação
% Resto da divisão de inteiros
-- Decremento
++ Incremento
Expressões Aritméticas
• São expressões que possuem operandos que 
podem ser variáveis e/ou constantes e 
utilizam operadores aritméticos.
• O resultado de uma expressão aritmética é um 
valor numérico.
• Exemplos:
– a + b * 10
– b++
– z * (10 + s)
Expressões Aritméticas
• Exemplo: a + b * 10
Operando variável
Operador
Operando constante
Precedência dos Operadores 
Aritméticos
Operador
++ --
* / %
+ -
• A utilização de parênteses afeta a precedência 
dos operadores.
Operadores de Incremento (++) e 
Decremento (--)
• São operadores unários, atuam um operando.
• Podem ser pré-fixados ou pós-fixados.
– ++x
– x++
– --a
– a--
• Independente de pré-fixado ou pós-fixado, realizam 
o incremento ou decremento do conteúdo da 
variável em 1.
Operador de Incremento e 
Decremento
• Quando isolado em uma expressão
a++; ↔ a = a + 1;
++a; ↔ a = a + 1;
a-- ↔ a = a – 1;
--a; ↔ a = a – 1;
Operador de Incremento e 
Decremento
• Quando não isolados em uma expressão.
• Pós-fixada 1º usa o valor na expressão e depois
incrementa.
• Pré-fixada 1º incrementa e depois usa o valor na
expressão.
a = 2;
x = 5 + a++;
x = 5 + a;
a++;
a = 2;
x = 5 + ++a;
a++;
x = 5 + a;
Avaliação do Tipo do Resultado de 
uma Expressão Aritmética
char chr;
int int_32;
float dec_32
double dec_64
double resultado;
Resultado = (chr/int_32) + (dec_32*dec_64) - (dec_32+int_32);
int double float
double
double
Avaliação de uma Expressão 
Aritmética
int x = 5;
double z;
z = x / 2;
• Qual é o valor armazenado em z?
Avaliação de uma Expressão 
Aritmética
int x = 5;
double z;
z = x / 2.0;
• 2.0 informa para o compilador que é uma
constante do tipo double.
• (double) x é um typecast e informa para o
compilador que a variável x é um double na
expressão.
• Portanto o resultado da expressão é um
double.
int x = 5;
double z;
z = (double) x / 2;

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?