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 * 6
jest 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 == 2
jest 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.