Operadores integrados de C++, precedencia y asociatividad

El lenguaje C++ incluye todos los operadores de C y agrega varios operadores nuevos. Los operadores especifican una evaluación que se realizará en uno o más operandos.

Precedencia y asociatividad

La prioridad de los operadores especifica el orden en que se realizan las operaciones en las expresiones que contienen más de un operador. La asociatividad de los operadores especifica si, en una expresión que contiene varios operadores con la misma prioridad, un operando se agrupa con el de su izquierda o con el de su derecha.

Ortografías alternativas

C++ especifica ortografías alternativas para algunos operadores. En C, las ortografías alternativas se proporcionan como macros en el encabezado de <iso646.h>. En C++, estas alternativas son palabras clave y el uso de <iso646.h> o el equivalente en C++ <ciso646> está en desuso. En Microsoft C++, se requiere la opción del compilador /permissive- o /Za para poder habilitar las ortografías alternativas.

Tabla de prioridad y asociatividad de los operadores de C++

La tabla siguiente muestra la prioridad y la asociatividad de los operadores de C++ (de mayor a menor prioridad). Los operadores que tienen el mismo número de prioridad tienen la misma prioridad, a menos que se fuerce otra relación explícitamente mediante paréntesis.

Descripción del operador Operador Alternativa
Precedencia de grupo 1, sin asociatividad
Resolución de ámbito ::
Precedencia de grupo 2, asociatividad de izquierda a derecha
Selección de miembros (objeto o puntero) . o ->
Subíndice de matriz []
Llamada a función ()
Incremento de postfijo ++
Disminución del postfijo --
Nombre de tipo typeid
Conversión de tipos constantes const_cast
Conversión de tipos dinámicos dynamic_cast
Conversión de tipos reinterpretados reinterpret_cast
Conversión de tipos estáticos static_cast
Precedencia de grupo 3, asociatividad de derecha a izquierda
Tamaño del objeto o tipo sizeof
Incremento de prefijo ++
Decremento de prefijo --
Complemento a uno ~ compl
NOT lógico ! not
Negación unaria -
Unario más +
Dirección de &
Direccionamiento indirecto *
Crear objeto new
Destruir objeto delete
Cast ()
Precedencia de grupo 4, asociatividad de izquierda a derecha
Puntero a miembro (objetos o punteros) .* o ->*
Precedencia de grupo 5, asociatividad de izquierda a derecha
Multiplicación *
División /
Módulo %
Precedencia de grupo 6, asociatividad de izquierda a derecha
Suma +
Resta -
Precedencia de grupo 7, asociatividad de izquierda a derecha
Desplazamiento a la izquierda <<
Desplazamiento a la derecha >>
Precedencia de grupo 8, asociatividad de izquierda a derecha
Menor que <
Mayor que >
Menor o igual que <=
Mayor o igual que >=
Precedencia de grupo 9, asociatividad de izquierda a derecha
Igualdad ==
Desigualdad != not_eq
Precedencia de grupo 10 asociatividad de izquierda a derecha
AND bit a bit & bitand
Precedencia de grupo 11, asociatividad de izquierda a derecha
OR exclusivo bit a bit ^ xor
Precedencia de grupo 12, asociatividad de izquierda a derecha
OR inclusivo bit a bit | bitor
Precedencia de grupo 13, asociatividad de izquierda a derecha
Y lógico && and
Precedencia de grupo 14, asociatividad de izquierda a derecha
O lógico || or
Precedencia de grupo 15, asociatividad de derecha a izquierda
Condicional ? :
Cesión =
Asignación de multiplicación *=
Asignación de división /=
Asignación de módulos %=
Asignación de suma +=
Asignación de resta -=
Asignación de desplazamiento a la izquierda <<=
Asignación de desplazamiento a la derecha >>=
Asignación AND bit a bit &= and_eq
Asignación OR inclusiva bit a bit |= or_eq
Asignación OR exclusiva bit a bit ^= xor_eq
throw expression throw
Precedencia de grupo 16, asociatividad de izquierda a derecha
Comma ,

Consulte también

Sobrecarga de operadores