Expressões de C
quadrado(a)*0.5
-
Operandos: É o valor que a variávelpode assumir, valor cosntante ou variável.
-
Operadores: São elementos que relacionam de forma diferente, os valores das variáveis e/ou constantes. Ou seja, os operadores nos permitem manipular valores.
-
Os operadores apresentam aridade: unário, binário, ternário (em C existe o operador ternário: ( ? : ) falaremos depois!)
Operador de Atribuição:
Este operador pode ser utilizado dentro de qualquer operação válida em C. Os Operadores de atribuição são: =, +=, -=, *=, ...
a = b = 10;
Operadores Aritméticos:
-
Subtração ou menos unário: -
-
Adição: +
-
Multiplicação: *
-
Divisão: /
-
módulo da divisão (resto): %
-
Decremento:
-
Pré-decremento: - -x = Decrementa x e retorna valor decrementado;
-
Pós-decremento: x- - = Decrementa x e retorna o valor anterior;
-
Incremento:
-
Pré-incremento: ++x = incrementa x e retorna valor incrementado;
-
Pós-incremento: x++ = incrementa x e retorna o valor anterior;
*OBS: A diferença de Pré para Pós: É que quando o operador precede seu operando, a operação de incremento ou decremento é executada antes de usar o valor do operando. Se o operador estiver após seu operando, o seu valor será usado e depois será somado ou subtraído.
Operadores Relacionais e Lógicos:
Os operadores relacionais referem-se as relações que os valores podem ter uns com os outros. São eles:
-
maior que: >;
-
maior ou igual que: >=;
-
menor que: <;
-
menor ou igual que: <=;
-
igual: ==; (dois sinais de igual representam o operador relacional igual, diferente do operador de atribuição, que é representado por apenas um sinal);
-
diferente de: !=.
Os operadores lógicos referem-se a maneira como essas relações podem ser conectadas.
-
&& - operador AND, verifica se todas as condições são verdadeiras;
-
|| - operador OR, verifica se pelo menos uma das condições é verdadeira;
-
! - operador NOT representa o contrário de uma condição, por exemplo, se uma expressão é verdadeira, ela será representada como falsa e vice versa.
É permitido combinar diversas operações em um expressão, como no seguinte exemplo:
10>5 && !(10<9) || 3 <= 4
Neste caso, o resultado é verdadeiro.
Operadores Bit a Bit: Para tarefas particulares.
O C têm operadores para manipular a representação binária dos números:
- Operadores lógicos:
-
& -e bit a bit;
-
| -ou bit a bit;
-
^ -ou exclusivo bit a bit;
-
~ -negação bit a bit (complemento para 1).
OBS: Não confundir com os operadores lógicos booleanos - &&, || e !.
-
Operadores de deslocamento de bits (shift):
-
>> -deslocamento de bits para a direita;
-
<< -deslocamento de bits para a esquerda.
O Operador sizeof:
O operador sizeof retorna o tamanho em bytes da variável ou especificador de tipo.
O operador sizeof ajuda basicamente a gerar códigos portáveis que dependam do tamanho dos tipos de dados internos em C.
sizeof (int) // Retorna o tamanho em bytes de int
sizeof (x) // Retorna o tamanho em bytes de x
sizeof y // Retorna o tamanho em bytes de y
Parênteses ():
Em C, parênteses são operadores que aumentam a precedência das operações dentro deles. Veja este exemplo:
x = (3 + 1) * (4 - 2);
Nesse caso, a operações (3 + 1) e ( 4 - 2) serão efetuadas antes de serem multiplicadas, ou seja, a multiplicação será 4 * 2.
O Operador Vírgula (,):
O operador vírgula é usado para encadear diversas expressões. Veja este exemplo:
x = (y=3, y+1);
Primeiro o valor 3 é atribuído a variável y, depois é somado mais 1 a y, assim, a variável x, recebe o valor 4. É necessário que esteja entre parênteses, pois o operador vírgula tem precedência menor do que o operador de atribuição.
O Operador ternário ( ? : ):
O operador ternário, como o próprio nome indica, contém três operandos:
variável = ? :
ou seja, como exemplo temos o caso onde x receberá o valor de 2 no caso em 1>10 for falsa, e receberá o valor de 1 se 1>10 for verdadeira:
x = (1 > 10) ? 1 : 2
x=2 neste caso!
CASTS:
Você pode forçar uma expressão a ser de um determinado tipo usando um cast. A forma genérica de um cast é:
(tipo) expressão
onde tipo é qualquer tipo de dados válido em C. Por exemplo, para garantir que a expressão x/2 resulte em um valor do tipo float, escreva:
y = (float) x/2;
Agregação:
Constrói um valor composto a partir de seus componentes. Exemplo:
Expressão Condicionais:
Possuem várias subexpressões, das quais exatamente uma é escolhida. Nem todas as LPs provêem expressões condicionais. Exemplo:
max := (x > y ? x : y);
Acesso a Variáveis e Constantes:
Expressão que retorna o conteúdo de uma constante ou variável:
const float Pi = 3.1416;
int r;
Na expressão 2*Pi*r
Pi é um acesso à constante que retorna o valor 3.1416. Já r é um acesso a variável que retorna o valor corrente contido nela.
Expressões com Efeitos Colaterais:
O objetivo principal de avaliar uma expressão é retornar um valor. Na maioria das LPs imperativas, contudo, é possível avaliar uma expressão que tenha o efeito colateral de atualizar variáveis.
x = ++c * 3.15;
No exemplo acima, a expressão atribuída a x produz como efeito colateral o incremento da variável x. Normalmente, efeitos colaterais tornam o programa mais difícil de ser lido e entendido.
Chamadas de Função:
A própria chamada de função também é uma expressão cujo valor é o valor de retorno da função, bastando colocá-la no lado direito de um sinal de igual para guardar o valor numa variável.
Por exemplo, se a função "quadrado" retorna o quadrado de um número inteiro, podemos fazer assim para calcular o quadrado de 11 na variável x:
int x = quadrado (11);
Fontes:
https://www.pontov.com.br/site/index.php/cpp/61-aprendendo-o-c/245-parte-1-expressoes-em-c-3o-parte
https://orium.homelinux.org/univ/lei/ac/slides/P-04-Expr.pdf
https://pt.wikibooks.org/wiki/Programar_em_C/Fun%C3%A7%C3%B5es#Chamadas_de_fun.C3.A7.C3.B5es
https://www.inf.ufes.br/~fvarejao/lp/cap4.doc