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.

OperadoresDescriçãoAssociatividade
::Resolução de escopoesquerda 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

throwLançamento de exceção---
,Vírgulaesquerda para direita

Tabela

Operadores aritméticos

OperadorSintaxeÉ sobrecarregável?Presente em C?
Adição unária+aSimSim
Adiçãoa + bSimSim
Incremento pré-fixado++aSimSim
Incremento pós-fixadoa++SimSim
Atribuição por adiçãoa += bSimSim
Subtração unária-aSimSim
Subtraçãoa - bSimSim
Decremento pré-fixado--aSimSim
Decremento pós-fixadoa--SimSim
Atribuição por subtraçãoa -= bSimSim
Multiplicaçãoa * bSimSim
Atribuição por multiplicaçãoa *= bSimSim
Divisãoa / bSimSim
Atribuição por divisãoa /= bSimSim
Módulo (resto)a % bSimSim
Atribuição por módulo (resto)a %= bSimSim

Operadores comparativos

OperadorSintaxeÉ sobrecarregável?Presente em C?
Menor quea < bSimSim
Menor ou igual quea <= bSimSim
Maior quea > bSimSim
Maior ou igual quea >= bSimSim
Diferente dea != bSimSim
Igual aa == bSimSim
Não lógico!aSimSim
E lógicoa && bSimSim
Ou lógicoa || bSimSim
Deslocamento à esquerdaa << bSimSim
Atribução de deslocamento à esquerdaa <<= bSimSim
Deslocamento à direitaa >> bSimSim
Atribuição de deslocamento à direitaa >>= bSimSim

Operadores lógicos sobre bits

OperadorSintaxeÉ sobrecarregável?Presente em C?
Complemento~aSimSim
Ea & bSimSim
Atribuição por ea &= bSimSim
Oua | bSimSim
Atribuição por oua |= bSimSim
Ou exclusivoa ^ bSimSim
Atribuição por ou exclusivoa ^= bSimSim

Outros operadores

OperadorSintaxeÉ sobrecarregável?Presente em C?
Atribuiçãoa = bSimSim
Chamada de funçãoa()SimSim
Elemento de arranjoa[]SimSim
De referência*aSimSim
Referência&aSimSim
Membro de ponteiroa->bSimSim
Membro de identificadora.bNãoSim
De referência de membro de identificadora.*bNãoNão
De-referência de membro de ponteiroa->*bSimNão
Conversão de tipo de dados(tipo) aSimSim
Vírgulaa , bSimSim
Condição ternáriaa ? b : cNãoSim
Resolução de escopoa :: bNãoNão
Tamanho desizeof aNãoSim
Identificador de tipotypeid (tipo de dado)NãoNão

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.

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.