Escolar Documentos
Profissional Documentos
Cultura Documentos
expressões (continuação)
SEMPRE NA MAIOR.
Incremento e decremento
Operador Ação
++ Soma 1 ao seu operando
-- Subtrai 1 do seu operando
++x;
é o mesmo que x = x + 1;
X++;
--x;
é o mesmo que x = x - 1;
x--;
Incremento e decremento
• Pré-fixado versus pós-fixado
++x; X++;
--x; x--;
pré pós
Pós-Fixado
Os programas abaixo são equivalentes.
expr = ++x * y; x = x + 1;
cout << "y = " << y << endl; cout << "x = " << x << endl;
cout << "expr = " << expr << endl; cout << "y = " << y << endl;
} return 0;
}
Hora da dúvida
E se mais de um operador estivesse
presente em uma atribuição, qual seria
executado primeiro?
Aí vem a tal da precedência!
Mais alta
++ --
*/%
+-
Mais baixa
x*y/z
x = 6; y=2; z = 4;
Operadores aritméticos de
atribuição
é o mesmo que
Operador Ação
&& AND
|| OR
! NOT
Precedência dos operadores
lógicos e relacionais
10 > 1 + 12
é avaliado como
10 > (1 + 12)
Precedência
Mais alta !
> >= < <=
== !=
&&
Mais baixa ||
Conversões
Quando operandos de tipos diferentes são
misturados em uma expressão, os valores
são convertidos no tipo do maior operando.
prioridade de double
conversão float
int
char
Conversão de tipos em expressões
Casting
Cast é uma conversão explícita de
tipo.
sintaxe
(tipo) expressão
exemplo
int x = 13;
float y = (float) x/2;
Conversão de tipos em atribuições
perde-se a informação.
• Quando se faz conversão
envolvendo números em ponto
flutuante, pode-se perder precisão.
Exercício 1
• Construa a tabela verdade para o
operador lógico AND (&&), considerando
apenas a e b como proposições.
Exercício 2
• Construa a tabela verdade para o
operador lógico OR ( || ) considerando a e
b como proposições.
Exercício 3: Informe quais serão os valores
de saída do programa dado a seguir
#include <iostream>
using namespace std;
int main()
{
int a = 2, b = -1, c = 0;
float d = 0.5, e = 2.0;
int r1 = a+b && c;
int r2 = !(int)d;
int r3 = e++*a;
float r4 = c || a && --e * d;
float r5 = b/a;
float r6 = (float)b/a;
cout << "r1=" << r1 << " r2=" << r2 << " r3=" << r3 << endl;
cout << "r4=" << r4 << " r5=" << r5 << " r6=" << r6 << endl;
return 0;
}