C Pierwszeństwo i łączność operatorów: definicja i przykłady

W tym samouczku dowiesz się o pierwszeństwie i skojarzeniu operatorów na podstawie przykładów.

Pierwszeństwo operatorów

Pierwszeństwo operatorów określa, który operator jest wykonywany jako pierwszy, jeśli w wyrażeniu występuje więcej niż jeden operator.

Rozważmy przykład:

 int x = 5 - 17* 6;

W języku C pierwszeństwo *jest większe niż -i =. Dlatego 17 * 6jest oceniany jako pierwszy. Następnie wyrażenie obejmujące -jest oceniane jako pierwszeństwo -jest wyższe niż pierwszeństwo z =.

Oto tabela priorytetów operatorów od wyższego do niższego. Własność asocjatywności zostanie omówiona wkrótce.

Tabela pierwszeństwa i skojarzenia operatorów

Operator Znaczenie operatora Łączność
()
()
->
.
Wywołanie funkcji
Odwołanie do elementu tablicy
Pośredni wybór elementu członkowskiego
Bezpośredni wybór elementu członkowskiego
Z lewej na prawą
!
~
+
-
++
-
&
*
sizeof
(typ)
Negacja logiczna
Uzupełnienie bitowe (1)
Jednoargumentowe plus
jednoargumentowe minus
przyrost
Zmniejszenie
Odwołanie (adres)
Odwołanie do wskaźnika
Zwraca rozmiar obiektu
Typecast (konwersja)
Od prawej do lewej
*
/
%
Pomnóż
podziel
resztę
Z lewej na prawą
+
-
Binarny plus (dodawanie)
Binarny minus (odejmowanie)
Z lewej na prawą
<<
>>
Przesunięcie w lewo Przesunięcie w
prawo
Z lewej na prawą
<
<
>
> =
Mniejsze niż
Mniejsze niż lub równe
Większe niż
Większe lub równe
Z lewej na prawą
==
! =
Równe do
Nie równe
Z lewej na prawą
& Bitowe i Z lewej na prawą
^ Wyłączne OR bitowe Z lewej na prawą
| Bitowe OR Z lewej na prawą
&& Logiczne AND Z lewej na prawą
|| Logiczne LUB Z lewej na prawą
?: Operator warunkowy Od prawej do lewej
=
* =
/ =
% =
+ =
- =
& =
=
| =
<< =
>> =
Proste przypisanie
Przypisanie iloczynu
Przypisanie ilorazu
Przypisanie reszty
Przypisanie sumy
Przypisanie różnicy
Przypisanie bitów AND
Przypisanie bitów XOR
Przypisanie bitów LUB
Przypisanie przesunięć w lewo
Przypisanie przesunięć w prawo
Od prawej do lewej
, Separator wyrażeń Z lewej na prawą

Łączność operatorów

Asocjatywność operatorów określa kierunek, w którym oceniane jest wyrażenie. Na przykład,

 b = a;

Tutaj wartość a jest przypisana do b, a nie na odwrót. Dzieje się tak, ponieważ asocjatywność =operatora przebiega od prawej do lewej.

Ponadto, jeśli występują dwa operatory o tym samym priorytecie (priorytecie), asocjatywność określa kierunek, w którym są wykonywane.

Rozważmy przykład:

 1 == 2! = 3

Tutaj operatory ==i !=mają ten sam priorytet. Ich łączność jest od lewej do prawej. Dlatego 1 == 2jest wykonywany jako pierwszy.

Powyższe wyrażenie jest równoważne z:

 (1 == 2)! = 3

Uwaga: Jeśli instrukcja ma wiele operatorów, możesz użyć nawiasów, ()aby kod był bardziej czytelny.

Interesujące artykuły...