Podręcznik
Wersja podręcznika: 1.0
Data publikacji: 01.01.2022 r.
6. Wyrażenia i operatory
6.1. Priorytety operatorów
W C++ jest kilkadziesiąt różnych operatorów. Czasem wymagają one podania jednego argumentu, czasem dwóch. Są też takie które wymagają podania 3, lub dowolnej liczby argumentów. Czasem wynikiem ich działania jest wrtość logiczna, czasem wartość dowolnego typu. To co je wszystkie łączy - to hierarchia.
By przy interpretacji wyrażeń z nich zbudowanych nie powstał bałagan - hierarchia jest ściśle zdefiniowana, i podzielona na kilkanaście poziomów. Wszystkie operatory na danym poiomie są równoważne - o kolejności ich wykonania decyduje kolejność pojawiania się w kodzie
Priorytet | Ilość arg. | Operator | Opis | Przykład |
---|---|---|---|---|
1 | 2 | :: | zakres, przestrzeń nazw | std::cout |
2 | 2 | () [] . -> ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid |
nawiasy, inkrementacja postfiksowa (przyrostkowa), odwołanie do metod obiektów, odwołania do pól struktur... |
i++, obiekt->metoda() |
3 | 1 | ++ -- ~ ! sizeof new delete * & + - |
inkrementacja przedrostkowa (prefiksowa), referencja, wskaźnik |
++i, +k, -k, & ref, * wsk |
4 | 1 | (typ) | rzutowanie | (double) a |
5 | 2 | .* ->* | ||
6 | 2 | * / % | mnożenie, dzielenie, modulo | a / b |
7 | 2 | + - | dodawanie, odejmowanie | a + b |
8 | 2 | << >> | przesunięcie bitów | a << 2 |
9 | 2 | < > <= >= | porównywanie | a < b |
10 | 2 | == != | porównywanie | a == b |
11 | 2 | & | bitowy iloczyn | |
12 | 2 | ^ | różnica symetryczna XOR | |
13 | 2 | | | bitowa suma | |
14 | 2 | && | iloczyn logiczny | (warunek1) && (warunek2) |
15 | 2 | || | suma logiczna | (warunek1) || (warunek2) |
16 | 3 | x ? y : z | operator warunkowy – zwraca y, gdy x ma wartość niezerową, z w przeciwnym wypadku | |
17 | 2 | = *= /= %= += -= >>= <<= &= ^= != |
przypisanie | a %= b |
18 | 2 | , | operator przecinkowy, służący np. do grupowania wyrażeń podczas inicjalizowania pętli | for(i = 1, j = 1;;i++,j--) |
Od priorytetu operatora zależy, w jakiej kolejności zostaną wykonane operacje z których składa się wyrażenie. W przypadku operatorów o tym samym priorytecie, wyrażenie wykonywane w kolejności albo od lewej do prawej - albo od prawej do lewej, w zależności od tego z której strony jest wiązanie danego operatora.
W przypadku, gdybyście mieli wątpliwości odn. kolejności wykonania operacji – celowo jeden z najwyższych priorytetów ma operator nawiasów ().