C Prioriteit en associativiteit van operators: definitie en voorbeelden

In deze zelfstudie leert u aan de hand van voorbeelden over de prioriteit en associativiteit van operators.

Voorrang van operators

De prioriteit van operatoren bepaalt welke operator als eerste wordt uitgevoerd als een expressie meer dan één operator bevat.

Laten we een voorbeeld bekijken:

 int x = 5 - 17* 6;

In C is de prioriteit van *hoger dan -en =. Daarom 17 * 6wordt eerst geëvalueerd. Vervolgens wordt de uitdrukking die erbij betrokken -is, geëvalueerd omdat de prioriteit van -hoger is dan die van =.

Hier is een tabel met voorrang van operators van hoger naar lager. De eigenschap van associativiteit komt binnenkort aan de orde.

Tabel voor prioriteit en associativiteit van operators

Operator Betekenis van operator Associativiteit
()
()
->
.
Functionele oproep
Referentie array-element
Indirecte ledenselectie
Directe ledenselectie
Van links naar rechts
!
~
+
-
++
-
&
*
sizeof
(type)
Logische negatie
Bitwise (1 's) aan te vullen
Unary plus
Unary minus
Toename
Decrement
Verwijzing van (adres)
Pointer verwijzing
retourneren de grootte van een object
Typecast (conversie)
Rechts naar links
*
/
%
Vermenigvuldig
Divide
Restant
Van links naar rechts
+
-
Binair plus
(optellen) Binair min (aftrekken)
Van links naar rechts
<<
>>
Links verschuiven
Rechts verschuiven
Van links naar rechts
<
<=
>
> =
Kleiner dan
Kleiner dan of gelijk aan
Groter dan
Groter dan of gelijk
Van links naar rechts
==
! =
Gelijk aan
niet gelijk aan
Van links naar rechts
& Bitwise EN Van links naar rechts
^ Bitwise exclusief OF Van links naar rechts
| Bitsgewijs OF Van links naar rechts
&& Logisch EN Van links naar rechts
|| Logische OF Van links naar rechts
?: Voorwaardelijke operator Rechts naar links
=
* =
/ =
% =
+ =
- =
& =
=
| =
<< =
>> =
Eenvoudige toewijzing
Product
toewijzen Quotiënt
toewijzen Rest
toewijzen Som
toewijzen Verschil
toewijzen Bitgewijs
toewijzen EN Bitgewijs toewijzen XOR Bitgewijs
toewijzen OF
Linker shift
toewijzen Rechter shift toewijzen
Rechts naar links
, Scheidingsteken van uitdrukkingen Van links naar rechts

Associativiteit van operators

De associativiteit van operatoren bepaalt de richting waarin een uitdrukking wordt geëvalueerd. Bijvoorbeeld,

 b = a;

Hier wordt de waarde van a toegewezen aan b, en niet andersom. Het is omdat de associativiteit van de =operator van rechts naar links is.

Als er twee operators met dezelfde prioriteit (prioriteit) aanwezig zijn, bepaalt associativiteit de richting waarin ze worden uitgevoerd.

Laten we een voorbeeld bekijken:

 1 == 2! = 3

Hier hebben operators ==en !=dezelfde prioriteit. En hun associativiteit is van links naar rechts. Daarom 1 == 2wordt het eerst uitgevoerd.

De bovenstaande uitdrukking is gelijk aan:

 (1 == 2)! = 3

Opmerking: als een instructie meerdere operatoren heeft, kunt u haakjes ()gebruiken om de code beter leesbaar te maken.

Interessante artikelen...