Requisitos:
C++ tiene una precedencia que define qué operaciones se ejecutan antes de qué otras operaciones. Por ejemplo:
cout << 3 + 2 * 5;
Esto muestra por pantalla 13, porque la operación * tiene más preferencia que la operación +. Es decir, en realidad se está interpretando así:
cout << 3 + (2 * 5);
Pero podemos ir más allá. ¿Por qué no se ha mostrado sólo el 3 si és valor más cercano al cout? Pues porque << tiene menos preferencia que +. Por tanto sabemos que se está interpretando así:
cout << (3 + (2 * 5));
Y en esta instrucción:
if (mi_edad > edad_padre - edad_madre)
Vemos que las comparaciones tienen menos precedencia que los cálculos matemáticos:
if (mi_edad > (edad_padre - edad_madre))
Lo mismo ocurre aquí:
int mi_edad = anio_actual - anio_nacimiento;
Es evidente que la operación de asignación tiene menos preferencia que las operaciones matemáticas y que los tipos de variable.
(int mi_edad) = (anio_actual - anio_nacimiento);
Por tanto podemos deducir la siguiente precedencia básica (de mayor a menor):
- ( )
- Tipo de variable
- *, /, %
- +, -
- <<, >>
- <=, >=, >, <
- ==, !=
- and
- or
- =
Estas precedencias están muy bien estudiadas para que en la mayoría majoria de casos no necesitemos poner paréntesis.
En caso de empate de preferencias se ejecuta de izquierda a derecha, como en este caso:
cout << 5 - 2 + 7;
Esto muestra por pantalla 10 por que la suma y la resta tienen la misma preferencia por lo tanto primero se calcula la resta, que está más a la izquierda, y después la suma que está más a la derecha.
Puedes consultar la referencia completa de la precedencia de operadores en C++.

Añadir nuevo comentario