next up previous contents
Next: Expressões condicionais Up: Expressões Previous: Expressões   Sumário

Expressões aritméticas

O comando de atribuição em C é indicado pelo símbolo =, como em

      main() {
         int a, b, c;
         
         a = 10;      /* a recebe valor 10 */
         b = c = a;   /* b e c recebem o valor de a (10) */
      }
Observe neste exemplo que a atribuição pode ser encadeada -- na última linha da função acima, c recebe inicialmente o valor da variável a, e então o valor de c será atribuído à variável b.

Expressões aritméticas em C podem envolver os operadores binários (isto é, operadores que tomam dois argumentos) de soma (+), subtração (-), multiplicação (*), divisão (/). Valores negativos são indicados pelo operador unário -. Adicionalmente, para operações envolvendo valores inteiros são definidos os operadores de resto da divisão inteira ou módulo (%), incremento (++) e decremento (--). Por exemplo,

    main() {
      int a=10, b, c, d;

      b = 2*a;       /* b = 20 */
      a++;           /* a = a+1 (11) */
      c = b/a;       /* divisao inteira:  c = 1 */
      d = b%a;       /* resto da divisao: d = 9 */
    }

Cada um dos operadores de incremento e decremento tem duas formas de uso, dependendo se eles ocorrem antes do nome da variável (pré-incremento ou pré-decremento) ou depois do nome da variável (pós-incremento ou pós-decremento). No caso do exemplo acima, onde o operador de incremento ocorre de forma isolada em uma expressão (sozinho na linha), as duas formas possíveis são equivalentes. A diferença entre eles ocorre quando estes operadores são combinados com outras operações. No exemplo acima, as linhas de atribuição à b e incremento de a poderiam ser combinados em uma única expressão,

      b = 2*(a++);    /* b recebe 2*a e entao a recebe a+1 */
Observe como esta expressão é diferente de
      b = 2*(++a);    /* a recebe a+1 e entao b recebe 2*a */
Na prática, os parênteses nas duas expressões acima poderiam ser omitidos uma vez que a precedência do operador de incremento é maior que da multiplicação -- ou seja, o incremento será avaliado primeiro. O Apêndice C.10 apresenta a ordem de avaliação para todos os operadores da linguagem C.

C tem também uma forma compacta de representar expressões na forma

      var = var op (expr);
onde uma mesma variável var aparece nos dois lados de um comando de atribuição. A forma compacta é
      var op= expr;
Por exemplo,
      a += b;      /* equivale a a = a+b */
      c *= 2;      /* equivale a c = c*2 */


next up previous contents
Next: Expressões condicionais Up: Expressões Previous: Expressões   Sumário
Ivan L. M. Ricarte 2003-02-14