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
W jakim celu wprowadzono podane prorytety operatorów? W skrócie można powiedzieć, abyzapewnić określoną kolejność wykonywania operacji. W prostych operacjach jest to zazwyczaj mało skomplikowany problem. Ponieważ nawiasy posiadają prawie najwyższy priorytet wykonania, więc korzystając z nich możemy w łatwy sposób sterować kolejnością wykonywania poszczególnych działań. Proces decyzyjny w przypadku rozbudowanego wyrażenia najlepiej przedstawić na konkretnym przykładzie.
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:



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:



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