52
ROZDZIAŁ 8. OPERATORY
• jednoargumentowe oj>eratory i opisano przy okazji opisywania wskaźników;
• operatory i opisywano przy okazji opisywania struktur i unii;
• operator “()” będący operatorom wywołania funkcji,
• ojłorator “()" grupujący wyrażenia (np. w celu zmiany kolejności obliczania
Jak w matematyce, również i w języku C obowiązuje pewna ustalona kolejność działań. Aby móc ją określić należy ustalić dwu parametry danego operatora: jego priorytet oraz łączność. Przykładowo operator mnożenia ma wyższy priorytet niż operator dodawania i z tego powodu w wyrażeniu 2+2-2 najpierw wykonuje się mnożenie, a dopiero potem dodawanie.
Drugim parametrem jest łączność — określa ona od której strony wykonywane są działania w przypadku połączenia operatorów o tym samym priorytecie. Na przykład odejmowanie ma łączność lewostronną i 2 -2 -2 da w wyniku -2. Gdyby miało łączność prawostronną w wynikiem byłoby 2. Przykładom matematycznego operatora, który ma łączność prawostronną jest potęgowanie, np. 32 jest równe 81.
W języku C występuje dużo poziomów operatorów. Poniżej przedstawiamy tabelkę ze wszystkimi operatorami poczynając od tych z najwyższym priorytetem (wykonywanych na początku).
Taljela 8.1: Priorytety operatorów
Operator |
Łączność |
nawiasy |
nk* dotyczy |
jednoargumentowe jrrzyrostkowe: . -> wołanie ftmkrji jMfstinkre-mentacja postdekrcmentaeja |
lewostronna |
jednoargumentowe przedrostkowe:! + * k sizeof preinkremen-taeja predekrementacja rzutowanie |
prawostronna |
*/% |
lewostronna |
+ |
lewostronna |
« » |
lewostronna |
<<=>>= |
lewostronna |
== != |
k'wostrouna |
k |
lewostronna |
lewostronna | |
lewostronna | |
kk |
lewostronna |
II |
lewostronna |
prawostronna | |
operatory przypisania |
prawostronna |
, |
lewostronna |
Duża liczba poziomów pozwala czasami zaoszczędzić trochę milisekund w trakcie pisania programu i bajtów na dysku, gdyż często nawiasy nie są potrzebne, nie należy