La prioridad de las operaciones en C++ es un concepto fundamental que determina el orden en que se evalúan las expresiones dentro de una instrucción. Esto es crucial para comprender cómo se comportará el programa y evitar errores de lógica o resultados inesperados. En C++, las operaciones se realizan siguiendo ciertas reglas de precedencia y asociatividad.
Primero, es importante comprender que las operaciones se evalúan de izquierda a derecha, y las operaciones con mayor prioridad se evalúan antes que las de menor prioridad. Aunque esto parece sencillo, hay ciertos casos que pueden resultar confusos si no se comprende completamente cómo funcionan las reglas de prioridad.

La tabla de precedencia de operadores en C++ es la siguiente (de mayor a menor precedencia):
- Paréntesis:
()
- Operadores unarios:
+
,-
,++
,--
,!
,~
,*
(puntero),&
(dirección) - Multiplicación, división y módulo:
*
,/
,%
- Suma y resta:
+
,-
- Desplazamiento de bits:
<<
,>>
- Operadores relacionales:
<
,<=
,>
,>=
- Operadores de igualdad:
==
,!=
- Operadores lógicos AND:
&&
- Operadores lógicos OR:
||
- Operador condicional ternario:
? :
- Asignación y sus variantes:
=
,+=
,-=
,*=
,/=
,%=
,<<=
,>>=
,&=
,|=
,^=
- Coma:
,
Es importante tener en cuenta que dentro de un mismo nivel de precedencia, las operaciones se evalúan de izquierda a derecha, a menos que se utilicen paréntesis para modificar este orden.
Por ejemplo, consideremos la siguiente expresión:
cppint resultado = 5 * 3 + 2;
Según la tabla de precedencia, la multiplicación se evaluará primero, seguida de la adición. Por lo tanto, el resultado será 17 (5 * 3 = 15
, luego 15 + 2 = 17
).
Sin embargo, si queremos que la adición se evalúe primero, podemos utilizar paréntesis para forzar el orden:
cppint resultado = 5 * (3 + 2);
Ahora, la adición se realizará antes de la multiplicación, y el resultado será 25 (3 + 2 = 5
, luego 5 * 5 = 25
).
Es crucial comprender estas reglas de precedencia y asociatividad para escribir código claro y evitar errores de interpretación por parte del compilador. Además, el uso adecuado de paréntesis puede mejorar la legibilidad del código, haciendo que las intenciones del programador sean más evidentes.
Más Informaciones
Claro, profundicemos más en el tema de la prioridad de operadores en C++.
- Paréntesis: Los paréntesis tienen la mayor prioridad y se utilizan para agrupar partes de una expresión y alterar el orden de evaluación. Por ejemplo:
cppint resultado = (5 + 3) * 2;
En este caso, la suma dentro de los paréntesis se evalúa primero, luego se multiplica por 2, dando como resultado 16.
- Operadores unarios: Estos operadores actúan sobre un único operando. Por ejemplo, el operador de negación unaria (
-
) cambia el signo del operando:
cppint x = 5;
int resultado = -x;
Aquí, resultado
será igual a -5.
- Multiplicación, división y módulo: Estos operadores se evalúan después de los paréntesis y los operadores unarios, pero antes de la suma y resta. Por ejemplo:
cppint resultado = 10 / 2 * 3;
Aquí, primero se realiza la división (10 / 2), dando como resultado 5, y luego se multiplica por 3, dando como resultado 15.
- Suma y resta: Estos operadores se evalúan después de la multiplicación, división y módulo. Por ejemplo:
cppint resultado = 10 + 5 - 3;
Aquí, primero se realiza la suma (10 + 5), dando como resultado 15, y luego se resta 3, obteniendo 12.
- Desplazamiento de bits: Los operadores de desplazamiento de bits (
<<
y>>
) tienen menor prioridad que la suma y la resta. Por ejemplo:
cppint resultado = 1 << 2 + 1;
Aquí, primero se evalúa la suma (2 + 1), dando como resultado 3, y luego se realiza el desplazamiento a la izquierda, dando como resultado 8.
- Operadores relacionales y de igualdad: Estos operadores se evalúan después de los desplazamientos de bits. Por ejemplo:
cppbool esMayor = 10 > 5;
bool sonIguales = 10 == 5;
Aquí, esMayor
será verdadero ya que 10 es mayor que 5, mientras que sonIguales
será falso ya que 10 no es igual a 5.
- Operadores lógicos AND y OR: Estos operadores se evalúan después de los operadores relacionales y de igualdad. Por ejemplo:
cppbool resultado = (5 > 3) && (10 == 10);
Aquí, resultado
será verdadero ya que ambas condiciones son ciertas.
- Operador condicional ternario: Este operador se evalúa después de los operadores lógicos AND y OR. Es una forma abreviada de expresar una estructura condicional. Por ejemplo:
cppint x = 10;
int resultado = (x > 5) ? 100 : 200;
Aquí, si x
es mayor que 5, resultado
será 100; de lo contrario, será 200.
- Asignación y sus variantes: Estos operadores tienen la menor prioridad y se evalúan al final. Por ejemplo:
cppint x = 5;
x += 3 * 2;
Primero se evalúa 3 * 2
, que es 6, luego se suma a x
, dando como resultado 11.
Es importante comprender estas reglas de prioridad y asociatividad para escribir código correcto y comprensible en C++. Además, es recomendable utilizar paréntesis cuando sea necesario para evitar confusiones sobre el orden de evaluación.