Precedencia de operadores y asociatividad en C++

Muhammad Husnain 15 febrero 2024
  1. Operadores en C++
  2. Precedencia de operadores y asociatividad en C++
  3. Conversión implícita de tipos en expresiones en C++
Precedencia de operadores y asociatividad en C++

Este artículo discutirá los operadores en C++ y cómo se evalúan cuando se usan en una expresión. Existen reglas específicas para su manipulación, por lo que las veremos para aprender sobre la evaluación de expresiones usando operadores de C++.

Operadores en C++

Los operadores son símbolos que se utilizan para manipular variables y valores. Por ejemplo, los operadores + y - se utilizan para sumas y restas.

En C++, los operadores se subdividen en 4 categorías:

  1. Operador aritmético
  2. Operador de asignación
  3. Operador Relacional
  4. Operador lógico

Operadores aritméticos

Estos operadores se utilizan para realizar diferentes operaciones aritméticas sobre algunos datos. Por ejemplo, * se usa para multiplicar dos o más números o variables.

Hay numerosos operadores aritméticos que se enumeran a continuación:

Símbolo del operador Descripción
+ Operador de suma
- Operador de resta
* Operador de multiplicación
/ Operador de división
% Operador de módulo (resto después de la operación de división)

Operador de asignación

Estos operadores pueden asignar algún valor específico a una variable; = es el operador de asignación. Considere el siguiente ejemplo.

int a;
a = 5;

Aquí, a a se le asignará el valor 5 utilizando el operador de asignación =. También hay otros operadores de asignación, que se enumeran a continuación:

Operador Declaración equivalente
un += 5 un = un +5
a -= 5 un = un -5
un *= 5 a = a*5
a /= 5 a = a /5
un %= 5 a = a%5

Operador relacional

Los operadores relacionales se utilizan para comparar 2 valores u operandos. Si la relación se evalúa como verdadera, devuelve el valor 1, y si se evalúa como falsa, devuelve 0.

En C++ se utilizan múltiples operadores relacionales:

Operador Descripción
<, > mayor que y menor que
<=, >= Menor que e igual a, mayor que e igual a
== Igual a
!= No igual a

Operadores logicos

Los operadores lógicos pueden evaluar si una expresión es verdadera o falsa. Si es verdadero, el resultado devuelto es 1; en caso contrario, 0.

Hay varios operadores lógicos, que se enumeran a continuación:

Operadores Descripción
&& Operador Y. Esto devuelve true si todas las expresiones son verdaderas.
`
! NO Operador. Esto devuelve true si la expresión es falsa.

Precedencia de operadores y asociatividad en C++

Si tenemos una expresión con más de un operador, entonces la expresión se evalúa según la precedencia de los operadores. La precedencia define la prioridad de los operadores y qué operador se evalúa primero.

Considere el siguiente ejemplo:

a = 3 * 5 / 2 + 3

Ahora, en esta expresión, qué operador se manipulará primero se decide por la precedencia de los operadores.

La lista de precedencia de operadores se muestra en la siguiente tabla:

Precedencia de operadores

Ahora, podemos ver que ciertos operadores tienen el mismo nivel de precedencia. La expresión que tiene dichos operadores con el mismo nivel de precedencia se evalúa utilizando la regla de asociatividad.

La asociatividad define la secuencia de operadores que se evaluarán en el mismo nivel de precedencia. A continuación se muestra la tabla que describe la asociatividad de los operadores:

Asociatividad de operadores

Conversión implícita de tipos en expresiones en C++

Cuando una expresión tiene variables de tipo mixto, el compilador realiza automáticamente la conversión de tipo según la operación y el tipo de datos de los operandos. Por ejemplo, considere el siguiente fragmento de código:

int a = 2, b = 3, c = 5;
double f = 4.5;
double res = a + b / f + c;

En la última línea de código, podemos ver que tres variables son de tipo int y una es de tipo double. Según la precedencia de operadores, / será el primero evaluado; en esta expresión, b/f significa que un int se divide por un doble, por lo que el resultado se convertirá en doble.

Después de eso, se evaluará + para int y double, por lo que el resultado se convertirá en double. Por lo tanto, el res será de tipo de datos doble.

Aquí podemos ver que el resultado de la expresión siempre se promueve a tipos de datos superiores que están involucrados en la expresión.

int + double = > double + double = double int* double =
                   > double* double = double double* int =
                       > double* double = double int / double =
                                              > double / double =
                                                  double double / int =
                                                      > double / double =
                                                          double int / int = int

Puede ver en las expresiones anteriores cómo los tipos se promocionan a tipos de datos superiores en el caso de expresiones de tipo mixto.

Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn

Artículo relacionado - C++ Operator