Partilhar via


Precedência e associatividade de operadores

A linguagem C++ inclui todos os operadores c e adiciona vários novos operadores.Os operadores especificam uma avaliação para ser executada em um destes procedimentos:

  • Um operando (operador unário)

  • Dois operandos (operador binário)

  • Três operandos (operador Ternário)

Operadores siga uma estrita precedência, que define a ordem de avaliação de expressões que contenham esses operadores.Operadores de associar a expressão à sua esquerda ou a expressão na sua direita; Isso é chamado de "associação". A tabela a seguir mostra a precedência e associatividade de operadores do C++ (da mais alta para a mais baixa).Operadores no mesmo segmento da tabela têm a mesma precedência e são avaliadas na ordem determinada em uma expressão, a menos que explicitamente forçada por parênteses.

C++ precedência e associatividade de operadores

Operador

Nome ou o significado

Associatividade

::

Resolução de escopo

Nenhum

 

 

 

.

Seleção de membro (objeto)

Esquerda para a direita

–>

Seleção de membro (ponteiro)

Esquerda para a direita

[ ]

Subscrito da matriz

Esquerda para a direita

( )

Inicialização de membro de chamada de função

Esquerda para a direita

++

Incremento de sufixo

Esquerda para a direita

––

Decréscimo do sufixo

Esquerda para a direita

typeid( )

Digite um nome

Esquerda para a direita

const_cast

Conversão de tipo (conversão)

Esquerda para a direita

dynamic_cast

Conversão de tipo (conversão)

Esquerda para a direita

reinterpret_cast

Conversão de tipo (conversão)

Esquerda para a direita

static_cast

Conversão de tipo (conversão)

Esquerda para a direita

 

 

 

sizeof

Tamanho do objeto ou tipo

Direita para a esquerda

++

Incremento de prefixo

Direita para a esquerda

––

Decréscimo de prefixo

Direita para a esquerda

~

Complemento de um

Direita para a esquerda

!

Não lógico

Direita para a esquerda

Menos unário

Direita para a esquerda

+

Mais unário

Direita para a esquerda

&

Endereço de

Direita para a esquerda

*

Caminho indireto

Direita para a esquerda

new

Criar objeto

Direita para a esquerda

delete

Destruir objeto

Direita para a esquerda

( )

Elenco

Direita para a esquerda

 

 

 

.*

Ponteiro para membro (objetos)

Esquerda para a direita

–>*

Ponteiro para membro (ponteiros)

Esquerda para a direita

 

 

 

*

Multiplicação

Esquerda para a direita

/

Divisão

Esquerda para a direita

%

MODULUS

Esquerda para a direita

 

 

 

+

Adição

Esquerda para a direita

Subtração

Esquerda para a direita

 

 

 

<<

Shift esquerda

Esquerda para a direita

>>

Shift direita

Esquerda para a direita

 

 

 

<

Menor que

Esquerda para a direita

>

Maior que

Esquerda para a direita

<=

Menor ou igual a

Esquerda para a direita

>=

Maior ou igual a

Esquerda para a direita

 

 

 

==

Igualdade

Esquerda para a direita

!=

Desigualdade

Esquerda para a direita

 

 

 

&

AND bit a bit

Esquerda para a direita

 

 

 

^

Bit a bit ou exclusivo

Esquerda para a direita

 

 

 

|

BITWISE OR inclusiva

Esquerda para a direita

 

 

 

&&

E lógico

Esquerda para a direita

 

 

 

||

OR lógico

Esquerda para a direita

 

 

 

expr1 ? expr2 : expr3

Condicional

Direita para a esquerda

 

 

 

=

Atribuição

Direita para a esquerda

*=

Atribuição de multiplicação

Direita para a esquerda

/=

Atribuição de divisão

Direita para a esquerda

%=

Atribuição de módulo

Direita para a esquerda

+=

Atribuição de adição

Direita para a esquerda

–=

Atribuição de subtração

Direita para a esquerda

<<=

Atribuição de shift esquerda

Direita para a esquerda

>>=

Atribuição de shift direita

Direita para a esquerda

&=

Atribuição de AND bit a bit

Direita para a esquerda

|=

Bit a bit inclusive atribuição de OR

Direita para a esquerda

^=

Bit a bit exclusiva atribuição de OR

Direita para a esquerda

 

 

 

throw expr

throw expressão

Direita para a esquerda

 

 

 

,

Vírgula

Esquerda para a direita

Consulte também

Referência

Operadores do C++

Sobrecarga de operador