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-fixoParênteses (chamada de função) Elemento de arranjo Seleção de elemento por identificador Seleção de elemento por ponteiroesquerda para direita++ -- + - ! ~ (tipo) * & sizeof new [] delete []Incremento e decremento prefixo Adição e subtração unária Não lógico e complemento Conversão de tipo de dado Desreferência Referência (endereço de elemento) tamanho de elemento Alocação dinâmica de memória Desalocação dinâmica de memóriadireita para esquerda.* ->* Ponteiro para membroesquerda 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ógicoc?t:fCondição ternáriadireita para esquerda= += -= *= /= %= <<= >>= &= ^= |=Atribuição Atribuição por adição ou subtração Atribuição por multiplicação, divisão ou módulo (resto) Atribuição por deslocalmento de bits Atribuição por operações lógicasthrow Lançamento de exceção ---, Vírgula esquerda para direita
Tabela
Operadores aritméticos Operador Sintaxe É sobrecarregável? Presente em C? Adição unária +a Adição a + b Incremento pré-fixado ++a Incremento pós-fixado a++ Atribuição por adição a += b Subtração unária -a Subtração a - b Decremento pré-fixado --a Decremento pós-fixado <tt>a-'''-</tt>|| align="center" | || align="center" | |- | Atribuição por subtração|| a -= b|| align="center" | || align="center" | |- | Multiplicação|| a * b|| align="center" | || align="center" | |- | Atribuição por multiplicação|| a *= b|| align="center" | || align="center" | |- | Divisão|| a / b|| align="center" | || align="center" | |- | Atribuição por divisão|| a /= b|| align="center" | || align="center" | |- | Módulo (resto) || a % b|| align="center" | || align="center" | |- | Atribuição por módulo (resto)|| a %= b|| align="center" | || align="center" | |- |colspan="4" |
Operadores comparativos |- ! Operador!! Sintaxe!! É sobrecarregável?!! Presente em C? |- | Menor que|| a < b|| align="center" | || align="center" | |- | Menor ou igual que|| a <= b|| align="center" | || align="center" | |- | Maior que|| a > b|| align="center" | || align="center" | |- | Maior ou igual que|| a >= b|| align="center" | || align="center" | |- | Diferente de|| a != b|| align="center" | || align="center" | |- | Igual a|| a == b|| align="center" | || align="center" | |- | Não lógico|| !a|| align="center" | || align="center" | |- | E lógico|| a && b|| align="center" | || align="center" | |- | Ou lógico|| a || b|| align="center" | || align="center" | |- | Deslocamento à esquerda|| a << b|| align="center" | || align="center" | |- | Atribução de deslocamento à esquerda|| a <<= b|| align="center" | || align="center" | |- | Deslocamento à direita|| a >> b|| align="center" | || align="center" | |- | Atribuição de deslocamento à direita|| a >>= b||align="center" | || align="center" | |- |colspan="4" |
Operadores lógicos sobre bits |- ! Operador!! Sintaxe!! É sobrecarregável?!! Presente em C? |- | Complemento|| ~a|| align="center" | || align="center" | |- | E|| a & b|| align="center" | || align="center" | |- | Atribuição por e|| a &= b|| align="center" | || align="center" | |- | Ou|| a | b|| align="center" | || align="center" | |- | Atribuição por ou|| a |= b|| align="center" | || align="center" | |- | Ou exclusivo|| a ^ b|| align="center" | || align="center" | |- | Atribuição por ou exclusivo'' a ^= b Outros operadores Operador Sintaxe É sobrecarregável? Presente em C? Atribuição a = b Chamada de função a() Elemento de arranjo a[] De referência *a Referência &a Membro de ponteiro a->b Membro de identificador a.b De referência de membro de identificador a.*b De-referência de membro de ponteiro a->*b Conversão de tipo de dados (tipo) a Vírgula a , b Condição ternária a ? b : c Resolução de escopo a :: b Tamanho de sizeof a Identificador de tipo typeid (tipo de dado)
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.
Categoria:C (linguagem de programação) Categoria:C++