.Expressões aritméticas |
A linguagem C disponibilisa cinco operadores aritméticos: +, -, *, / e % (respectivamente a soma, a substracção, a multiplicação a divisão e o módulo). O operador % pode ser usado apenas com operandos inteiros. A expressão 9 % 5 tem como valor o resto da divisão 9 / 5 ou seja o valor 4. Em C (e na maioria das linguagens de programação) a divisão não funciona exactamente como numa calculadora. Se, por exemplo dividir 5 por 2, escrevendo 5 / 2, dado que os dois operandos são de tipo inteiro, uma divisão inteira será efectuada dando como resultado o valor inteiro 2.
Para obter um resultado decimal, basta que um dos operandos seja de tipo float ou double.
Quando numa expressão aritmética existe vários operadores, qual é a ordem na qual são efectuadas as contas ? Se fosse no sentido da leitura (da esquerda para a direita) o valor de 3 + 2 * 5 seria 25 ou seja a soma seria calculada em primeiro lugar como se existisse parenteses : (3 + 2) * 5 = 5 * 5 = 25. Seguindo a mesma ideia, o valor de 5 * 3 + 2 seria 17. Conforme os casos, a multiplicação ou a soma seriam avaliadas em primeiro lugar.
Para simplificar e não obrigar o utilizador a usar parenteses para garantir a ordem de avaliação das sub-expressões, existem regras de precedência associadas aos operadores. Essas regras establessem prioridades entre operadores. Por exemplo a multiplicação é prioritária em relação à soma. Isto significa que por exemplo, na expressão 3 + 2 * 5 a multiplicação será avaliada antes da soma : 3 + 2 * 5 = 3 + (2 * 5) = 3 + 10 = 13. As expressões 5 * 2 + 3, 3 + 5 * 2 e 2 * 5 + 3 têm todas o mesmo valor (13) sem que seja necessário usar parênteses.
Neste exemplo podemos ver outra propriedade dos operadores de soma e de multiplicação: a commutatividade (a * b = b * a e a + b = b + a).
Entre operadores aritméticos as regras de precedência são (por ordem descrescente):
*, / e %+, -O que é que acontece quando uma expressão contém vários operadores com a mesma precedência ? Qual é o valor de 10 - 3 + 2 ? Será o valor de (10 - 3) + 2 = 9 ou o valor de 10 - (3 + 2) = 5 ? A resposta correcta é 9. Quando uma expressão contém operadores com mesma precedência, a avaliação é feita da esquerda para a direita.
Não é permitido dividir um valor por zero !