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