𝖂𝖎ƙ𝖎𝖊

Operadores em C e C++

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
Seleção de elemento por identificador
Seleção de elemento por ponteiro

esquerda 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ó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
Atribuição por multiplicação, divisão ou módulo (resto)
Atribuição por deslocalmento de bits
Atribuição por operações lógicas

throw 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 Predefinição:Sim Predefinição:Sim
Adição a + b Predefinição:Sim Predefinição:Sim
Incremento pré-fixado ++a Predefinição:Sim Predefinição:Sim
Incremento pós-fixado a++ Predefinição:Sim Predefinição:Sim
Atribuição por adição a += b Predefinição:Sim Predefinição:Sim
Subtração unária -a Predefinição:Sim Predefinição:Sim
Subtração a - b Predefinição:Sim Predefinição:Sim
Decremento pré-fixado --a Predefinição:Sim Predefinição:Sim
Decremento pós-fixado a-- Predefinição:Sim Predefinição:Sim
Atribuição por subtração a -= b Predefinição:Sim Predefinição:Sim
Multiplicação a * b Predefinição:Sim Predefinição:Sim
Atribuição por multiplicação a *= b Predefinição:Sim Predefinição:Sim
Divisão a / b Predefinição:Sim Predefinição:Sim
Atribuição por divisão a /= b Predefinição:Sim Predefinição:Sim
Módulo (resto) a % b Predefinição:Sim Predefinição:Sim
Atribuição por módulo (resto) a %= b Predefinição:Sim Predefinição:Sim

Operadores comparativos

Operador Sintaxe É sobrecarregável? Presente em C?
Menor que a < b Predefinição:Sim Predefinição:Sim
Menor ou igual que a <= b Predefinição:Sim Predefinição:Sim
Maior que a > b Predefinição:Sim Predefinição:Sim
Maior ou igual que a >= b Predefinição:Sim Predefinição:Sim
Diferente de a != b Predefinição:Sim Predefinição:Sim
Igual a a == b Predefinição:Sim Predefinição:Sim
Não lógico !a Predefinição:Sim Predefinição:Sim
E lógico a && b Predefinição:Sim Predefinição:Sim
Ou lógico a || b Predefinição:Sim Predefinição:Sim
Deslocamento à esquerda a << b Predefinição:Sim Predefinição:Sim
Atribução de deslocamento à esquerda a <<= b Predefinição:Sim Predefinição:Sim
Deslocamento à direita a >> b Predefinição:Sim Predefinição:Sim
Atribuição de deslocamento à direita a >>= b Predefinição:Sim Predefinição:Sim

Operadores lógicos sobre bits

Operador Sintaxe É sobrecarregável? Presente em C?
Complemento ~a Predefinição:Sim Predefinição:Sim
E a & b Predefinição:Sim Predefinição:Sim
Atribuição por e a &= b Predefinição:Sim Predefinição:Sim
Ou a | b Predefinição:Sim Predefinição:Sim
Atribuição por ou a |= b Predefinição:Sim Predefinição:Sim
Ou exclusivo a ^ b Predefinição:Sim Predefinição:Sim
Atribuição por ou exclusivo a ^= b Predefinição:Sim Predefinição:Sim

Outros operadores

Operador Sintaxe É sobrecarregável? Presente em C?
Atribuição a = b Predefinição:Sim Predefinição:Sim
Chamada de função a() Predefinição:Sim Predefinição:Sim
Elemento de arranjo a[] Predefinição:Sim Predefinição:Sim
De referência *a Predefinição:Sim Predefinição:Sim
Referência &a Predefinição:Sim Predefinição:Sim
Membro de ponteiro a->b Predefinição:Sim Predefinição:Sim
Membro de identificador a.b Predefinição:Não feito Predefinição:Sim
De referência de membro de identificador a.*b Predefinição:Não feito Predefinição:Não feito
De-referência de membro de ponteiro a->*b Predefinição:Sim Predefinição:Não feito
Conversão de tipo de dados (tipo) a Predefinição:Sim Predefinição:Sim
Vírgula a , b Predefinição:Sim Predefinição:Sim
Condição ternária a ? b : c Predefinição:Não feito Predefinição:Sim
Resolução de escopo a :: b Predefinição:Não feito Predefinição:Não feito
Tamanho de sizeof a Predefinição:Não feito Predefinição:Sim
Identificador de tipo typeid (tipo de dado) Predefinição:Não feito Predefinição:Não feito

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.

talvez você goste