Wyrażenia.

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 ( <typ> ) 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

Powrót na początek