Języki C i C++ są językami wyrażeń. Wyrażeń używa się tu do wszystkiego. Pojedyncza instrukcja może być wyrażeniem. Wyrażenie, to ciąg operandów powiązanych z sobą za pomocą operatorów. Na przykład 2 + 2 stanowi poprawne wyrażenie. Występują operatory jedno- i dwuargumentowe; jest też jeden trójargumentowy. Nie każde wyrażenie jest arytmetyczne, czyli nie zawsze daje arytmetyczny wynik. Wymienię teraz wszystkie zgodnie z malejącym priorytetem. Niestety język C++ trochę się zmienił od czasów C. W C++ więc zostały dodane nowe operatory związane z klasami i obiektami.
| Prior. | Operator | Krótki opis | Łączność |
|---|---|---|---|
| 16 | () | wywołanie funkcji lub metody | lewostronna |
| 16 | [] | indeksacja tablicy lub obszaru pamięci | lewostronna |
| 16 | -> | dostęp do składowej ze wskazywanego obiektu struktury lub klasy | lewostronna |
| 16 | . | dostęp do składowej obiektu struktury lub klasy | lewostronna |
| 16 | :: | dostęp do zakresu danej klasy (C++) | lewostronna |
| 15 | ! | logiczna negacja (NOT) | prawostronna |
| 15 | ~ | bitowa negacja (NOT) | prawostronna |
| 15 | + | bez zmiany znaku | prawostronna |
| 15 | - | zmiana znaku | prawostronna |
| 15 | ++ | inkrementacja (zwiększenie o jeden) | prawostronna |
| 15 | -- | dekrementacja (zmniejszenie o jeden) | prawostronna |
| 15 | & | adres pamięci zajmowanej przez obiekt | prawostronna |
| 15 | * | "wyłuskanie" obiektu ze wskaźnika | prawostronna |
| 15 |
|
rzutowanie na nowy typ | prawostronna |
| 15 | sizeof | rozmiar obiektu w bajtach | prawostronna |
| 15 | new | utworzenie nowego obiektu (C++) | prawostronna |
| 15 | delete | zniszczenie utworzonego obiektu (C++) | prawostronna |
| 14 | .* | wybór składowej do wskaźnika z obiektu (C++) | lewostronna |
| 14 | ->* | wybór składowej do wskaźnika ze wskazywanego obiektu (C++) | lewostronna |
| 13 | * | mnożenie | lewostronna |
| 13 | / | dzielenie | lewostronna |
| 13 | % | reszta z dzielenia (modulo) | lewostronna |
| 12 | + | dodawanie | lewostronna |
| 12 | - | odejmowanie | lewostronna |
| 11 | << | przesuwanie bitów w lewo | lewostronna |
| 11 | >> | przesuwanie bitów w prawo | lewostronna |
| 10 | < | "mniejsze niż" | lewostronna |
| 10 | <= | "mniejsze lub równe niż" | lewostronna |
| 10 | > | "większe niż" | lewostronna |
| 10 | >= | "większe lub równe niż" | lewostronna |
| 9 | == | "równe" | lewostronna |
| 9 | != | "różne od" | lewostronna |
| 8 | & | bitowa koniunkcja (AND) | lewostronna |
| 7 | ^ | bitowa różnica symetryczna (XOR) | lewostronna |
| 6 | | | bitowa alternatywa (OR) | lewostronna |
| 5 | && | logiczna koniunkcja (AND) | lewostronna |
| 4 | || | logiczna alternatywa (OR) | lewostronna |
| 3 | ?: | operacja warunkowa | lewostronna |
| 2 | = | przypisanie | prawostronna |
| 2 | *= | mnożenie i przypisanie | prawostronna |
| 2 | /= | dzielenie i przypisanie | prawostronna |
| 2 | %= | modulo i przypisanie | prawostronna |
| 2 | += | dodawanie i przypisanie | prawostronna |
| 2 | -= | odejmowanie i przypisanie | prawostronna |
| 2 | &= | bitowe AND i przypisanie | prawostronna |
| 2 | ^= | bitowe XOR i przypisanie | prawostronna |
| 2 | |= | bitowe OR i przypisanie | prawostronna |
| 2 | <<= | przesuwanie bitów w lewo i przypisanie | prawostronna |
| 2 | >>= | przesuwanie bitów w prawo i przypisanie | prawostronna |
| 1 | , | kolejne obliczanie podwyrażeń | lewostronna |
Jak widać, w tych językach położono bardzo duży nacisk na różnorodność operatorów. Niektóre z nich mają inne znaczenie, gdy użyte są w kontekście operacji na dwóch argumentach, a inne, gdy operują na jednym argumencie. Charakterystyczne dla C++ (tzn. nie było ich w C) są następujące operatory:
:: new delete .* ->*Operatory te są specyficzne dla C++ - operują na klasach i obiektach; trzy pierwsze z nich używane są nawet dość często.

Dalszy ciąg w przygotowaniu