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 */