C++ Precedencias de los operadores

Enviado por jvilella el Lun, 23/09/2019 - 03:47

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):

  1. ( )
  2. Tipo de variable
  3. *, /, %
  4. +, -
  5. <<, >>
  6. <=, >=, >, <
  7. ==, !=
  8. and
  9. or
  10. =

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++.

 

Printer Friendly, PDF & Email

Añadir nuevo comentario

Texto sin formato

  • No se permiten etiquetas HTML.
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.