C Precedência e associatividade de operadores: definição e exemplos

Neste tutorial, você aprenderá sobre a precedência e associatividade de operadores com a ajuda de exemplos.

Precedência de operadores

A precedência dos operadores determina qual operador é executado primeiro se houver mais de um operador em uma expressão.

Vamos considerar um exemplo:

 int x = 5 - 17* 6;

Em C, a precedência de *é maior do que -e =. Portanto, 17 * 6é avaliado primeiro. Em seguida, a expressão envolvendo -é avaliada como a precedência de -é maior do que a de =.

Aqui está uma tabela de precedência de operadores de cima para baixo. A propriedade da associatividade será discutida em breve.

Tabela de precedência e associatividade de operadores

Operador Significado do operador Associatividade
()
()
->
.
Chamada funcional
Referência de elemento de matriz
Seleção indireta de membro Seleção
direta de membro
Da esquerda para direita
!
~
+
-
++
-
&
*
sizeof
(tipo)
Negação lógica
Bitwise (1's) complemento
Unário mais
Unário menos
Incremento
Decremento
Desreferência (endereço)
Referência de ponteiro
Retorna o tamanho de um objeto
Typecast (conversão)
Direita para esquerda
*
/
%
Multiply
Divide
Remainder
Da esquerda para direita
+
-
Binário mais (adição)
Binário menos (subtração)
Da esquerda para direita
<<
>>
Shift esquerdo shift
direito
Da esquerda para direita
<
<=
>
> =
Menor que
menor ou igual
maior que
maior ou igual
Da esquerda para direita
==
! =
Igual a
Diferente de
Da esquerda para direita
E E bit a bit Da esquerda para direita
^ OR exclusivo bit a bit Da esquerda para direita
| OR bit a bit Da esquerda para direita
&& E lógico Da esquerda para direita
|| OR lógico Da esquerda para direita
?: Operador Condicional Direita para esquerda
=
* =
/ =
% =
+ =
- =
& =
=
| =
<< =
>> =
Atribuição simples
Atribuir produto
Atribuir quociente
Atribuir resto
Atribuir soma
Atribuir diferença
Atribuir bit a bit E
Atribuir XOR
bit a bit Atribuir bit a bit OU
Atribuir deslocamento à esquerda
Atribuir deslocamento à direita
Direita para esquerda
, Separador de expressões Da esquerda para direita

Associatividade de Operadores

A associatividade dos operadores determina a direção em que uma expressão é avaliada. Por exemplo,

 b = a;

Aqui, o valor de a é atribuído a b, e não o contrário. É porque a associatividade do =operador é da direita para a esquerda.

Além disso, se dois operadores com a mesma precedência (prioridade) estiverem presentes, a associatividade determina a direção em que eles são executados.

Vamos considerar um exemplo:

 1 == 2! = 3

Aqui, os operadores ==e !=têm a mesma precedência. E, sua associatividade é da esquerda para a direita. Portanto, 1 == 2é executado primeiro.

A expressão acima é equivalente a:

 (1 == 2)! = 3

Nota: Se uma instrução tiver vários operadores, você pode usar parênteses ()para tornar o código mais legível.

Artigos interessantes...