Expressões de C

 

    Expressão é uma frase do programa que ao ser avaliada produz um valor, em outras palavras, uma expressão é a forma de calcular um valor num programa:

quadrado(a)*0.5

    Caracterizam-se por apresentar: 
  • 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: 

  1. Pré-decremento: - -x = Decrementa x e retorna valor decrementado;

  2. Pós-decremento: x- - = Decrementa x e retorna o valor anterior;

  • Incremento: 

  1. Pré-incremento: ++x  =  incrementa x e retorna valor incrementado; 

  2. 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:

  1. maior que: >;

  2. maior ou igual que: >=;

  3. menor que: <;

  4. menor ou igual que: <=;

  5. igual: ==; (dois sinais de igual representam o operador relacional igual, diferente do operador de atribuição, que é representado por apenas um sinal);

  6. diferente de: !=. 

    Os operadores lógicos referem-se a maneira como essas relações podem ser conectadas.

  1. && - operador AND, verifica se todas as condições são verdadeiras;

  2. || - operador OR, verifica se pelo menos uma das condições é verdadeira;

  3. ! - 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:
     
  1. &  -e bit a bit;

  2. |  -ou bit a bit;

  3. ^  -ou exclusivo bit a bit;

  4. ~  -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):

  1. >>  -deslocamento de bits para a direita;

  2. <<  -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

04_Expressoes.pdf (963,5 kB)