Operadores
El lenguaje C se distingue de otros lenguajes por la gran cantidad de operadores que posee. Además de los operadores aritméticos comunes:
| Suma | Resta | Multiplicación | División | Módulo |
|---|---|---|---|---|
| + | - | * | / | % |
| Nota: El operador % es el resto de la división entera entre dos números. Por ej.: 7 % 3 = 1. | ||||
tenemos operadores relacionales ( <, >, <=, >= ), de igualdad ( ==, != ) que generan a partir de valores numéricos un valor de verdadero o falso. Como hemos visto la clase anterior, en el lenguaje C no existen tipos de variables que permitan contener este tipo de valores, así es que son representados a través de valores enteros y la convención es que un valor de 0 es falso y cualquier otro valor es verdadero; los operadores lógicos !, &&, || (not, and, or) que permiten armar expresiones lógicas complejas a partir de valores de verdad (por ej: a<=0 && b>c || ! (c==a && b!= -1)) y muchos mas que iremos viendo a lo largo del curso.
Entre los operadores existen reglas de precedencia y asociatividad, que son las que determinan el órden en que se realizan las operaciones dentro de una expresión compleja. La siguiente tabla contiene todos los operadores y sus relaciones.
| Precedencia | Operadores | Asociatividad |
|---|---|---|
| Alta |
() [] -> . (post)++ (post)--
|
|
|
++(pre) --(pre) ! ~ sizeof(type)
+(signo) -(signo) &(dirección) *(indirección)
|
de der. a izq. | |
|
* / %
|
de izq. a der. | |
|
+ -
|
de izq. a der. | |
|
<< >>
|
de izq. a der. | |
|
< <= > >=
|
de izq. a der. | |
|
== !=
|
de izq. a der. | |
|
&
|
de izq. a der. | |
|
^
|
de izq. a der. | |
|
|
|
de izq. a der. | |
|
&&
|
de izq. a der. | |
|
||
|
de izq. a der. | |
|
?:
|
de der. a izq. | |
|
= += -= *= /= %= >>= <<= &= ^= |=
|
de der. a izq. | |
| Baja |
,
|
de izq. a der. |
Intimidante, ¿no? Bueno, en realidad basta con recordar que los paréntesis tienen la más alta precedencia, así que cuando tengas alguna duda sólo tenés que usarlos para forzar a que las operaciones se realicen en el orden que vos querés.