C++ também contém os operadores para conversão de tipos de dados const_cast
, static_cast
, dynamic_cast
e reinterpret_cast
, que não estão listados na tabela.
Precedência de operadores
A seguir é listada a ordem de precedência e associatividade dos operadores. Elementos na mesma linha são calculados com a mesma precedência, de acordo com a direção dada.
A sintaxe das expressões é especificada por uma gramática livre de contexto, a tabela a seguir é inferida pela gramática.
Operadores | Descrição | Associatividade |
---|---|---|
:: |
Resolução de escopo | esquerda para direita |
++ --
|
Incremento e decremento pós-fixo Parênteses (chamada de função) Elemento de arranjo |
esquerda para direita |
++ --
|
Incremento e decremento prefixo Adição e subtração unária |
direita para esquerda |
.* ->* |
Ponteiro para membro | esquerda para direita |
* / %
|
Multiplicação, divisão, e módulo (resto) | |
+ -
|
Adição e subtração | |
<< >>
|
Deslocamento de bits à esquerda e à direita | |
< <=
|
“menor que” e “menor ou igual que” “maior que” e “maior ou igual que” | |
== !=
|
“Igual a” e “diferente de ” | |
&
|
E para bits | |
^
|
Ou exclusivo para bits | |
|
|
Ou para bits | |
&&
|
E lógico | |
||
|
Ou lógico | |
c?t:f
|
Condição ternária | direita para esquerda |
=
|
Atribuição Atribuição por adição ou subtração | |
throw |
Lançamento de exceção | --- |
, |
Vírgula | esquerda para direita |
Tabela
Sinônimos em C++
C++ define palavras-chave que atuam como apelidos para alguns operadores: and
(and
), bitand
(and
), and_eq
(and=
), or
(||
), bitor
(|
), or_eq
(|=
), xor
(^
), xor_eq
(^=
), not
(!
), not_eq
(!=
), compl
(~
). Eles são processados pelo analisador sintático da mesma forma que seus equivalentes.
Já C fornece na biblioteca padrão o cabeçalho iso646.h
, que define esses símbolos através de macros.