C++precedencia del operador


Observaciones

Los operadores se enumeran de arriba a abajo, en precedencia descendente. Los operadores con el mismo número tienen la misma prioridad y la misma asociatividad.

  1. ::
  2. Los operadores de postfix: [] () T(...) . -> ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid
  3. Los operadores de prefijo únicos: ++ -- * & + - ! ~ sizeof new delete delete[] ; la notación de reparto de estilo C, (T)... ; (C ++ 11 y superior) sizeof... alignof noexcept
  4. .* y ->*
  5. * , / , y % , operadores aritméticos binarios
  6. + y - , operadores aritméticos binarios
  7. << y >>
  8. < , > , <= , >=
  9. == y !=
  10. & , el operador bit a bit
  11. ^
  12. |
  13. &&
  14. ||
  15. ?: (operador condicional ternario)
  16. = , *= , /= , %= , += , -= , >>= , <<= , &= , ^= , |=
  17. throw
  18. , (el operador de coma)

La asignación, la asignación compuesta y los operadores condicionales ternarios son asociativos por derecho. Todos los demás operadores binarios son asociativos por la izquierda.

Las reglas para el operador condicional ternario son un poco más complicadas de lo que pueden expresar las reglas de precedencia simples.

  • Un operando se enlaza menos fuerte a un ? a su izquierda o a : a su derecha que a cualquier otro operador. Efectivamente, el segundo operando del operador condicional se analiza como si estuviera entre paréntesis. Esto permite una expresión como a ? b , c : d para ser sintácticamente válido.
  • ¿Un operando se une más fuertemente a un ? a su derecha que a un operador de asignación o throw a su izquierda, entonces a = b ? c : d es equivalente a a = (b ? c : d) y throw a ? b : c es equivalente a throw (a ? b : c) .
  • Un operando se enlaza más estrechamente con un operador de asignación a su derecha que : a su izquierda, entonces a ? b : c = d es equivalente a a ? b : (c = d) .

precedencia del operador Ejemplos relacionados