Podręcznik
1. Wyrażenia, operatory i funkcje matematyczne
1.5. Priorytety operatorów
W C++ priorytety operatorów określają kolejność, w jakiej operacje są wykonywane w wyrażeniu. Operatorzy o wyższym priorytecie są oceniani przed operatorami o niższym priorytecie. Jeśli operatorzy mają ten sam priorytet, ich kolejność jest określana przez ich łączność (lewo- lub prawostronną).
Priorytet | Operator | Opis | Łączność |
---|---|---|---|
1 | :: | operator zakresu, przestrzeń nazw | Lewostronna |
2 | a++ a-- () [] . -> |
postinkrementacja postdekrementacja wywołanie funkcji indeksowanie dostęp do członka klasy |
Lewostronna |
3 | ++a --a ~ ! +a -a & * new delete sizeof (typ) |
preinkrementacja predekrementacja negacja bitowa negacja logiczna tożsamość wartość przeciwna operator adresu operator wartości wskazywanej przez wskaźnik operator tworzenia obiektu w pamięci operator usuwania obiektu z pamięci operator rozmiaru zmiennej, stałej, wyrażenia lub typu operator rzutowania typów w stylu języka C |
Prawostronna |
4 | .* ->* |
operator dostępu do składowej operator dostęp do składowej |
Lewostronna |
5 | * / % |
operator mnożenia operator dzielenia operator dzielenia modulo (reszta z dzielenia) |
Lewostronna |
6 | + - |
operator dodawania operator odejmowania |
Lewostronna |
7 | << >> |
przesunięcie bitowe w lewo przesunięcie bitowe w prawo |
Lewostronna |
8 | <=> | operator porównania trójwartościowego | Lewostronna |
9 | < > <= >= |
mniejsze większe mniejsze równe większe równe |
Lewostronna |
10 | == != |
równe różne |
Lewostronna |
11 | & | operator bitowy AND | Lewostronna |
12 | ^ | operator bitowy XOR | Lewostronna |
13 | | | operator bitowy OR | Lewostronna |
14 | && | operator logiczny AND | Lewostronna |
15 | || | operator logiczny OR | Lewostronna |
16 | a?b:c = += -= *= /= %= <<= >>= &= ^= |= |
operator przetwarzania warunkowego operator przypisania operator skróconego przypisania przez dodawanie operator skróconego przypisania przez odejmowanie operator skróconego przypisania przez mnożenie operator skróconego przypisania przez dzielenie operator skróconego przypisania przez dzielenie modulo operator skróconego przypisania przez przesunięcie bitowe w lewo operator skróconego przypisania przez przesunięcie bitowe w prawo operator skróconego przypisania przez AND operator skróconego przypisania przez XOR operator skróconego przypisania przez OR |
Prawostronna |
17 | , | operator przecinek | Lewostronna |
Mając następujące wyrażenie: 3 + 5 * 2 > (12 / 4) && (6 - 4 * 2) < 2 || 15 % 4 == 3 należy wyznaczyć jego wartość pokazując jednocześnie kolejność wykonywanych operacji.
W pierwszej kolejności wykonywane są operacje w nawiasach:

Następnie wykonywane jest mnożenie i dzielenie w głównym wyrażeniu:


W pierwszej kolejności wykonywane są operacje w nawiasach:
Następnie wykonywane jest mnożenie i dzielenie w głównym wyrażeniu:
Następnie wykonywane jest dodawanie w głównym wyrażeniu:
Następnie wykonywane są operatory porównania mniejszości oraz większości:

Kolejnym krokiem jest wykonanie operacji równości:

Następnie wykonywana jest operacja AND:

Ostatnie jest sprawdzenie OR:

Ostatnie jest sprawdzenie OR:
W wyniku sprawdzenia całego wyrażenia oraz uwzględnieniu wszystkich priorytetów operatorów i kolejności wykonywania operacji otrzymaliśmy wartość
true.