- Conceptos básicos
- Operaciones de asignación
- Operaciones aritméticas
- Incremento y decremento
- Operaciones de comparación
- Operaciones lógicas
- Operaciones a nivel de bits
- Operaciones de modificación
- Operador ternario condicional
- Coma
- Operadores especiales sizeof y typename
- Agrupación con paréntesis
- Prioridades de las operaciones
Prioridades de las operaciones
Aquí está la tabla completa de todas las operaciones por orden de prioridad.
P |
Símbolos |
Descripción |
Ejemplo |
Orden de ejecución |
---|---|---|---|---|
0 |
:: |
Resolución de contexto |
n1:: n2 |
I-D |
1 |
() |
Agrupación |
(e1) |
I-D |
1 |
[] |
Índice |
[e1] |
I-D |
1 |
. |
Desreferenciación |
n1.n2 |
I-D |
1 |
++ |
Post-incremento |
e1++ |
I-D |
1 |
-- |
Post-decremento |
e1-- |
I-D |
2 |
! |
Negación lógica NOT |
!e1 |
D-I |
2 |
~ |
Complemento a nivel de bits (inversión) |
~e1 |
D-I |
2 |
+ |
Unario más |
+e1 |
D-I |
2 |
- |
Unario menos |
-e1 |
D-I |
2 |
++ |
Incremento prefijo |
++e1 |
D-I |
2 |
-- |
Decremento prefijo |
--e1 |
D-I |
2 |
(tipo) |
Conversión de tipos |
(n1) |
D-I |
2 |
& |
Obtención de la dirección |
&n1 |
D-I |
3 |
* |
Multiplicación |
e1 * e2 |
I-D |
3 |
/ |
División |
e1 / e2 |
I-D |
3 |
% |
Módulo de división |
e1 % e2 |
I-D |
4 |
+ |
Adición |
e1 + e2 |
I-D |
4 |
- |
Resta |
e1 - e2 |
I-D |
5 |
<< |
Desplazamiento a la izquierda |
e1 << e2 |
I-D |
5 |
>> |
Desplazamiento a la derecha |
e1 >> e2 |
I-D |
6 |
< |
Menos |
e1 < e2 |
I-D |
6 |
> |
Mayor |
e1 > e2 |
I-D |
6 |
<= |
Menor o igual que |
e1 <= e2 |
I-D |
6 |
>= |
Mayor o igual que |
e1 >= e2 |
I-D |
7 |
== |
Igualdad |
e1 == e2 |
I-D |
7 |
!= |
No es igual |
e1 != e2 |
I-D |
8 |
& |
AND a nivel de bits |
e1 & e2 |
I-D |
9 |
^ |
OR exclusivo a nivel de bits |
e1 ^ e2 |
I-D |
10 |
| |
OR a nivel de bits |
e1 | e2 |
I-D |
11 |
&& |
AND lógico |
e1 && e2 |
I-D |
12 |
|| |
OR lógico |
e1 || e2 |
I-D |
13 |
?: |
Ternario condicional |
c1 ? e1: e2 |
D-I |
14 |
= |
Asignación |
e1 = e2 |
D-I |
14 |
+= |
Suma con asignación |
e1 += e2 |
D-I |
14 |
-= |
Resta con asignación |
e1 -= e2 |
D-I |
14 |
*= |
Multiplicación con asignación |
e1 *= e2 |
D-I |
14 |
/= |
División con asignación |
e1 /= e2 |
D-I |
14 |
%= |
Módulo de división con asignación |
e1 %= e2 |
D-I |
14 |
<<= |
Desplazamiento a la izquierda con asignación |
e1 <<= e2 |
D-I |
14 |
>>= |
Desplazamiento a la derecha con asignación |
e1 >>= e2 |
D-I |
14 |
&= |
AND a nivel de bits con asignación |
e1 &= e2 |
D-I |
14 |
|= |
OR a nivel de bits con asignación |
e1 |= e2 |
D-I |
14 |
^= |
AND/OR a nivel de bits con asignación |
e1 ^= e2 |
D-I |
15 |
, |
Coma |
e1, e2 |
I-D |
Como hemos visto, los corchetes se utilizan para especificar los índices de los elementos del array y, por lo tanto, tienen una de las prioridades más altas.
Además de los operadores que se han visto anteriormente, aquí hay algunos todavía desconocidos.
Descubriremos el operador resolución de contexto '::' dentro de la programación orientada a objetos (POO). También necesitaremos al mismo tiempo el operador de desreferenciación '.'. Los identificadores de tipos (clases) y sus propiedades, no las expresiones, actúan como sus operandos.
El operador de obtención de direcciones '&' sirve para pasar los parámetros de la función mediante referenciación y obtener las direcciones de objetos en la POO. En ambos casos, el operador se aplica a una variable (LValue).
Las operaciones explícitas de conversión de tipos se abordarán en el capítulo siguiente.