Cos'è la precedenza e la associazione dell'operatore C

Cos'è la precedenza e la associazione dell'operatore C
Gli operatori sono comunemente usati per eseguire varie operazioni aritmetiche e logiche in C. Il linguaggio di programmazione C segue un ordine specifico noto come Precedenza dell'operatore E associatività per determinare l'ordine delle operazioni durante l'esecuzione. Le regole di Precedenza dell'operatore E associatività Aiuto a scrivere codice senza errori e aumentare la leggibilità del codice.

Questo articolo fornisce un tutorial completo per aiutarti a conoscere l'associazione e la precedenza dell'operatore in C.

Precedenza dell'operatore in C

Precedenza dell'operatore descrive la sequenza in cui vengono valutati diversi operatori durante la valutazione delle espressioni. Ad esempio, se un'espressione ha sia operatori di aggiunta che di moltiplicazione, che si dovrebbero essere valutati per primi? La risposta è semplice, C segue alcune regole per risolvere tale ambiguità, comunemente nota come Precedenza dell'operatore. In c, Precedenza dell'operatore è classificato in 17 livelli, che vanno dagli operatori unari all'operatore condizionale ternario. La maggior parte degli operatori usati come operatori aritmetici, operatori relazionali, operatori logici e operatori bitwise seguono lo standard C Precedenza dell'operatore protocollo.

Precedenza Le regole impongono quali operatori hanno una priorità più elevata rispetto ad altri durante la valutazione delle espressioni. Diversi tipi di operatori nel linguaggio di programmazione C hanno vari gradi di precedenza. Ad esempio, gli operatori unari hanno una priorità maggiore rispetto agli operatori binari. Quello che segue è un elenco di operatori ordinati in ordine crescente di precedenza:

Operatore Significato dell'operatore Associatività
()
[
->
.
Chiamata funzionale

Riferimento elemento dell'array

Selezione dei membri indiretti

Selezione diretta dei membri

Da sinistra a destra
!
~
+
-
++
-
E
*
taglia di
(tipo)
Negazione logica

Complemento bitwise (1)

Unary Plus

Unario meno

Incremento

Decremento

Dereference (indirizzo)

Riferimento del puntatore

Restituisce la dimensione di un oggetto

Typecast (conversione)

Da destra a sinistra
*
/
%
Moltiplicare

Dividere

Resto

Da sinistra a destra
+
-
Binary Plus (aggiunta)

Binario meno (sottrazione)

Da sinistra a destra
<<
>>
Tasto maiuscolo di sinistra

Shift destro

Da sinistra a destra
<
<=
>
> =
Meno di

Meno o uguale

Più grande di

Maggiore o uguale

Da sinistra a destra
==
!=
Uguale a

Non uguale a

Da sinistra a destra
E Bitwise e Da sinistra a destra
^ Bitwise esclusivo o Da sinistra a destra
| Bitwise o Da sinistra a destra
&& Logico e Da sinistra a destra
|| Logico o Da sinistra a destra
?: Operatore condizionale Da destra a sinistra
=
*=
/=
%=
+=
-=
& =
^=
| =
<<=
>> =
Assegnazione semplice

Assegna il prodotto

Assegna quoziente

Assegna il resto

Assegnare la somma

Assegnare la differenza

Assegna Bitwise e

Assegna Bitwise xor

Assegna Bitwise o

Assegna il turno sinistro

Assegna il cambio giusto

Da destra a sinistra
, Separatore di espressioni Da sinistra a destra

Queste regole guidano il compilatore su come valutare le espressioni con più operatori nella stessa espressione. L'operatore di moltiplicazione, ad esempio, ha una precedenza maggiore rispetto all'operatore di addizione nell'equazione A + B * C, in conformità con il precedenza regole. Pertanto, il compilatore valuterà prima l'espressione b * c prima di aggiungere un risultato.

Diamo un'occhiata a un esempio di Precedenza dell'operatore tramite codice.

#includere
int main ()
int a = 43, b = 11, c = 16, d = 31;
int risultato = ++ 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 ("risultato = %d \ n", risultato);
restituzione 0;

Le quattro variabili A, B, C e D, sono dichiarate nel codice sopra e i loro valori iniziali sono 43, 11, 16 e 31 di conseguenza. Quindi, applica una varietà di operatori aritmetici e di assegnazione a queste variabili in un'espressione. L'espressione aumenta il valore di A usando l'operatore pre-incremento ++ A, moltiplica il risultato per l'operatore post-decremento B-, quindi aggiunge il risultato alla divisione C per valore pre-decremento di D. (Utilizzo dell'operatore di pre -decremento -D). Il risultato variabile viene quindi utilizzato per trattenere il risultato totale di questa espressione.

Produzione

Associazione in c

Associatività si riferisce all'ordine in cui gli operatori vengono valutati durante un'espressione con la stessa precedenza. Da sinistra a destra e da destra a sinistra associatività sono le due forme di associazione in C. Se due operatori hanno lo stesso precedenza, sono valutati da sinistra a destra secondo il concetto di da sinistra a destra associatività. Tuttavia, se si osserva la stessa precedenza, gli operatori vengono valutati da destra a sinistra in base a destra a sinistra associatività.

Ad esempio, l'operatore di incremento ++ ha diritto a sinistra associatività, il che significa l'incremento operatore viene valutato dopo la variabile. Mentre il logico e operatore ha un sinistra a destra associatività, il che significa che l'operatore viene valutato da sinistra a destra.

#includere
int main ()
int a = 6, b = 3, c = 2;
int risultato = a * b / c;
printf ("risultato = %d \ n", risultato);
restituzione 0;

Le tre variabili A, B e C sono dichiarate in questo codice e sono inizializzate rispettivamente a 6, 3 e 2. Quindi, applica le operazioni di moltiplicazione e di divisione a queste variabili in un'espressione. Moltiplicazione e divisione sono classificate da sinistra a destra in C in base al loro associatività poiché hanno lo stesso livello di precedenza. Ciò indica che l'operazione di divisione viene prima, seguita dall'operazione di moltiplicazione quando si valuta l'espressione, un * b / c.

Produzione

Conclusione

Precedenza dell'operatore E associatività sono concetti cruciali nella programmazione C che aiutano a determinare l'ordine di esecuzione delle espressioni. Operatori con il più alto precedenza il livello viene valutato per primo e associatività Le regole aiutano a determinare l'ordine quando vengono utilizzati più operatori con la stessa precedenza. Comprensione Precedenza dell'operatore E associatività è essenziale quando si progetta programmi complessi e aiuta a produrre un codice più pulito e più efficiente con meno errori.