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 precedencia del operador especifica el orden de las operaciones en expresiones que contienen más de un operador. Asociatividad de operadores especifica si, en una expresión que contiene varios operadores con la misma precedencia, un operando se agrupa con el que está a la izquierda o el que está a la derecha.

Ortografía alternativa

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

Tabla de asociatividad y precedencia de 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
Prioridad del grupo 1, sin asociatividad
Resolución de ámbito ::
Prioridad del grupo 2, asociatividad de izquierda a derecha
Selección de miembro (objeto o puntero) O ->
Subíndice de matriz []
Llamada de función ()
Incremento de postfijo ++
Decremento de postfijo --
Nombre de tipo typeid
Conversión de tipos constante const_cast
Conversión de tipos dinámica dynamic_cast
Conversión de tipos reinterpretada reinterpret_cast
Conversión de tipos estática static_cast
Prioridad del grupo 3, asociatividad de derecha a izquierda
Tamaño de objeto o tipo sizeof
Incremento de prefijo ++
Decremento de prefijo --
Complemento de uno ~ compl
No lógico ! not
Negación unaria -
Suma unaria +
Dirección de &
Direccionamiento indirecto *
Crear objeto new
Destruir objeto delete
Fundido ()
Prioridad del grupo 4, asociatividad de izquierda a derecha
Puntero a miembro (objetos o punteros) O ->*
Prioridad del grupo 5, asociatividad de izquierda a derecha
Multiplicación *
División /
Modulus %
Prioridad del grupo 6, asociatividad de izquierda a derecha
Suma +
Resta -
Prioridad del grupo 7, asociatividad de izquierda a derecha
Desplazamiento a la izquierda <<
Desplazamiento a la derecha >>
Prioridad del grupo 8, asociatividad de izquierda a derecha
Menor que <
Mayor que >
Menor o igual que <=
Mayor o igual que >=
Prioridad del grupo 9, asociatividad de izquierda a derecha
Igualdad ==
Desigualdad != not_eq
Prioridad del grupo 10 de izquierda a derecha
AND bit a bit & bitand
Prioridad del grupo 11, asociatividad de izquierda a derecha
OR exclusivo bit a bit ^ xor
Prioridad del grupo 12, asociatividad de izquierda a derecha
OR inclusivo bit a bit | bitor
Prioridad del grupo 13, asociatividad de izquierda a derecha
Y lógico && and
Prioridad del grupo 14, asociatividad de izquierda a derecha
O lógico || or
Prioridad del grupo 15, asociatividad de derecha a izquierda
Condicional ? :
Asignación =
Asignación y multiplicación *=
Asignación y división /=
Asignación y módulo %=
Asignación y suma +=
Asignación y resta -=
Asignación y desplazamiento a la izquierda <<=
Asignación y desplazamiento a la derecha >>=
Asignación AND bit a bit &= and_eq
Asignación y OR inclusivo bit a bit |= or_eq
Asignación OR exclusivo bit a bit ^= xor_eq
Expresión Throw throw
Prioridad del grupo 16, asociatividad de izquierda a derecha
Coma ,

Vea también

Sobrecarga de operadores