Qual é a precedência e associativa do operador C

Qual é a precedência e associativa do operador C
Os operadores são comumente usados ​​para executar várias operações aritméticas e lógicas em C. A linguagem de programação C segue uma ordem específica conhecida como operador precedente e Associatividade Para determinar a ordem das operações durante a execução. As regras de operador precedente e Associatividade Ajuda na escrita de código sem erros e aumente a legibilidade do código.

Este artigo fornece um tutorial abrangente para ajudá -lo a aprender sobre associatividade e precedência do operador em c.

Precedência do operador em c

Operador precedente descreve a sequência em que vários operadores são avaliados ao avaliar expressões. Por exemplo, se uma expressão tiver operadores de adição e multiplicação, que deve ser avaliada primeiro? A resposta é simples, C segue certas regras para resolver essa ambiguidade, comumente conhecida como operador precedente. Em c, operador precedente é classificado em 17 níveis, variando de operadores unários ao operador condicional ternário. A maioria dos operadores usados, como operadores aritméticos, operadores relacionais, operadores lógicos e operadores bit -newwood, seguem o padrão C operador precedente protocolo.

Precedência As regras determinam quais operadores têm prioridade mais alta do que outros ao avaliar expressões. Vários tipos de operadores na linguagem de programação C têm graus variados de precedência. Por exemplo, operadores unários têm uma prioridade maior do que os operadores binários. A seguir, é apresentada uma lista de operadores classificados em ordem crescente de precedência:

Operador Significado do operador Associatividade
()
[]
->
.
Chamada funcional

Referência do elemento da matriz

Seleção de membros indiretos

Seleção direta de membros

Da esquerda para direita
!
~
+
-
++
-
&
*
tamanho de
(tipo)
Negação lógica

Complemento bit -newo (1's)

UNARY Plus

Unário menos

Incremento

Decremento

Dereferência (endereço)

Referência do ponteiro

Retorna o tamanho de um objeto

TypeCast (conversão)

Direita para esquerda
*
/
%
Multiplicar

Dividir

Restante

Da esquerda para direita
+
-
Binário Plus (adição)

Binário menos (subtração)

Da esquerda para direita
<<
>>
Desvio à esquerda

Deslocamento para a direita

Da esquerda para direita
<
<=
>
> =
Menor que

Menor ou igual

Maior que

Maior ou igual

Da esquerda para direita
==
!=
Igual a

Não igual a

Da esquerda para direita
& Bit nejudado e Da esquerda para direita
^ Bitwise exclusivo ou Da esquerda para direita
| Bit nejudado ou Da esquerda para direita
&& Lógico e Da esquerda para direita
|| Lógico ou Da esquerda para direita
?: Operador condicional Direita para esquerda
=
*=
/=
%=
+=
-=
& =
^=
| =
<<=
>> =
Atribuição simples

Atribuir produto

Atribuir quociente

Atribuir restante

Atribuir soma

Atribuir diferença

Atribua bit e

Atribua XOR Bitwise

Atribua bitwise ou

Atribua turno esquerdo

Atribua turno direito

Direita para esquerda
, Separador de expressões Da esquerda para direita

Essas regras orientam o compilador sobre como avaliar expressões com vários operadores na mesma expressão. O operador de multiplicação, por exemplo, tem maior precedência do que o operador de adição na equação A + B * C, de acordo com o precedência regras. Portanto, o compilador avaliará primeiro a expressão B * C antes de adicionar um ao resultado.

Vejamos um exemplo de operador precedente através do código.

#incluir
int main ()
int a = 43, b = 11, c = 16, d = 31;
int resultado = ++ a * b-- +c /--d;
printf ("a = %d \ n", a);
printf ("b = %d \ n", b);
printf ("c = %d \ n", c);
printf ("d = %d \ n", d);
printf ("resultado = %d \ n", resultado);
retornar 0;

As quatro variáveis ​​A, B, C e D, são declaradas no código acima, e seus valores iniciais são 43, 11, 16 e 31 de acordo. Em seguida, aplica uma variedade de operadores aritméticos e de atribuição a essas variáveis ​​em uma expressão. A expressão aumenta o valor de A usando o operador de pré-incremento ++ A, multiplica o resultado pelo operador pós-depressão B- e depois adiciona o resultado ao Civisando C pelo valor pré-declarado de D D D. (Usando o operador de pré -decisão -d). O resultado variável é então usado para manter o resultado total dessa expressão.

Saída

Associatividade em c

Associatividade refere -se à ordem em que os operadores são avaliados durante uma expressão com a mesma precedência. Da esquerda para a direita e direita para a esquerda Associatividade são as duas formas de associatividade em c. Se dois operadores tiverem o mesmo precedência, Eles são avaliados da esquerda para a direita de acordo com o conceito de esquerda para a direita Associatividade. No entanto, se a mesma precedência for observada, os operadores serão avaliados da direita para a esquerda de acordo com a direita para a esquerda Associatividade.

Por exemplo, o operador de incremento ++ tem o direito para a esquerda Associatividade, o que significa o incremento operador é avaliado após a variável. Considerando que o lógico e operador tem um da esquerda para a direita Associatividade, o que significa que o operador é avaliado da esquerda para a direita.

#incluir
int main ()
int a = 6, b = 3, c = 2;
int resultado = a * b / c;
printf ("resultado = %d \ n", resultado);
retornar 0;

As três variáveis ​​A, B e C são declaradas neste código e são inicializadas para 6, 3 e 2, respectivamente. Em seguida, aplica operações de multiplicação e divisão a essas variáveis ​​em uma expressão. Multiplicação e divisão são classificadas da esquerda para a direita em C com base em seus Associatividade como eles têm o mesmo nível de precedência. Isso indica que a operação da divisão vem primeiro, seguida pela operação de multiplicação ao avaliar a expressão, a * b / c.

Saída

Conclusão

Operador precedente e Associatividade são conceitos cruciais na programação C que ajudam a determinar a ordem de execução de expressões. Operadores com o mais alto precedência o nível é avaliado primeiro e Associatividade As regras ajudam a determinar a ordem quando vários operadores com a mesma precedência são usados. Entendimento operador precedente e Associatividade é essencial ao projetar programas complexos e ajuda a produzir código mais limpo e eficiente com menos erros.