Operatory są to znaki które nakazują programowi dodać, przypisać wartości zmiennych,
porównać ich wartość i inne rzeczy. Istnieje coś takiego jak pierwszeństwo operatorów.
Jest to dokładnie to samo co w matematyce. Wiemy że 4*4+4=20 a nie 32.. Chodzi tu
o to że najpierw wykonywane jest mnożenie a potem dodawanie a nie na odwrót. Jeżeli
chcielibyśmy zrobić to na odwrót stosujemy nawiasy. Np: 4*(4+4) i w tedy mamy
wynik 32. Dokładnie tak samo robimy w C++.
Listę operatorów przedstawiam poniżej. U samej góry są operatory z największym
pierwszeństwem a na dole z najmniejszym.
| Operator | Operacja | opis |
|---|---|---|
| :: :: | zasięg globalny (jednoargumentowy) zasięg klasy (dwuargumentowy) | |
| -> . [] () () | selektory składowych index tablicy wywołanie funkcji konstrukcja typu | |
| sizeof ++ -- ~ ! + - * & () new delete | rozmiar zwiększenie zmniejszenie negacja bitowa negacja logiczna plus (jednoargumentowe) minus (jednoargumentowe) wyłuskanie adres przekształcenie typu zarządzanie pamięcią przydzielaną dynamicznie | |
| ->* .* | wskaźnikowe selektory składowych | |
| * / % | mnożenie dzielenie dzielenie modulo | zwraca resztę z dzielenia |
| + - | dodawanie odejmowanie | |
| << >> | w lewo w prawo | przesuwanie bitów |
| < <= > >= | operacje relacji | |
| == != | równość nierówność | |
| & | koniunkcja bitowa | |
| ^ | różnica symetryczna | |
| | | alternatywa bitowa | |
| && | iloczyn logiczny | |
| || | suma logiczna | |
| ?: | if arytmetyczne | zastępuje czasem funkcję warunków |
| = *= /= % += -= <<= >>= &= |= ^= | Przypisz Pomnóż przez wartość Podziel przez wartość Umieść resztę z dzielenia przez wartość Dodaj Odejmij Przesuń o ... bitów w lewo Przesuń o ... bitów w prawo Logiczne AND Logiczne OR Negacja | Operacje przypisania. |
| , | przecinek |
Operatory arytmetyczne działają na ogólnych wartościach wyrażenia, nie na poszczególnych bitach. Oprócz podanych poniżej występuje jeszcze dodawanie i odejmowanie ale chyba tego nie muszę tłumaczyć.
Operator mnożenia mnoży przez siebie dwie liczby.
Nie ma do niego szczególnych zaleceń lub uwag. Ma on następującą składnię:
2 * 2
Operator dzielenia dzieli przez siebie dwie liczby. Trzeba pamiętać że dzielnik nie
może być zerem. Jeżeli nastąpi taka sytuacja to program przerwie działanie z komunikatem
błędu dzielenia przez 0. Składnia:
argument / dzielnik
Dzielenie modulo zwraca resztę z dzielenia. Tzn jeżeli dzielimy liczbę całkowitą
przez drugą całkowitą (bo tylko na takich liczbach operacja ta jest dozwolona)
to często wynikiem jest ułamek. np wynik dzielenia 3/2 będzie 1 (jeżeli wynik ma być typu int)
żeby określić jaka liczba jest po przecinku stosujemy dzielenie modulo. Wynik tego dzielenia też jest zawsze typu int.
Jeżeli wynikiem dzielenia jest liczba całkowita np: 4/2=2,
to wynikiem dzielenia modulo jest 0 (4%2=0). W ten sposób bada się parzystość liczby.
Składnia:
liczba1 % liczba2
Operatory bitowe działają osobno na poszczególnych bitach zmiennych
Zakładamy że operacja dzieje się na zmiennych typu unsigned char.
Jeżeli zmienna ma wartość przedstawioną w postaci binarnej:
00100100
to wynikiem takiej operacji zmienna << 2 będzie wynik:
10010000
to polecenie przesuwa bity w lewo o dwie pozycje. Argument traci bity które w wyniku
przesunięcia znajdą się poza nim. po prawej stronie na miejsce brakujących bitów wstawia zera.
Składnia:
zmienna << liczba bitów
Zakładamy że operacja dzieje się na zmiennych typu unsigned char.
Jeżeli zmienna ma wartość przedstawioną w postaci binarnej:
00100100
to wynikiem takiej operacji zmienna >> 1 będzie wynik:
00010010
to polecenie przesuwa bity w lewo o jedną pozycję. Argument traci bity które w wyniku
przesunięcia znajdą się poza nim. po lewej stronie na miejsce brakujących bitów wstawia zera.
Składnia:
zmienna >> liczba bitów
Negacja bitowa zamienia w zmiennej wszystkie zera na jedynki i jedynki na zera.
Jeżeli mamy zmienną o wartości:
10011010
to jej negacja bitowa wygląda tak:
01100101
Składnia:
~zmienna
Koniunkcja bitowa jest to mnożenie pojedynczych bitów. Koniunkcja daje wynik
jeden na danej pozycji, gdy w we wszystkich zmiennych na tej pozycji jest jedynka.
Jeżeli tylko na jednym miejscu jest 0 to wynikiem jest 0. Przykład:
01101011 - zmienna1
Działa on na argumentach całkowitych
11001101 - zmienna2
01001001 - wynik
Składnia:
zmienna1 & zmienna2
Wynikiem różnicy symetrycznej jest na danej pozycji jedynka tylko w tedy gdy tylko
w jednej zmiennej na danej pozycji jest jedynka. W przeciwnym wypadku jest 0.
01101011 - zmienna1
Działa on na argumentach całkowitych
11001101 - zmienna2
10100110 - wynik
Składnia:
zmienna1 ^ zmienna2
Wynikiem alternatywy bitowej jest na danej pozycji jedynka w tedy gdy przynajmniej
w jednej zmiennej na danej pozycji jest jedynka. W przeciwnym wypadku jest 0.
01101011 - zmienna1
Działa on na argumentach całkowitych
11001101 - zmienna2
11101111 - wynik
Składnia:
zmienna1 | zmienna2
Operatory te słóżą do obliczania wartości "prawda" lub "fałsz". Warunek prawdziwy daje wartość 1 natomiast fałszywy 0.
Negacja logiczna zamienia prawdę w fałsz, a fałsz w prawdę. Np. jeżeli wyrażenie:
a==b jest prawdziwe i do niego zastosujemy wyrażenie !(a==b) to w wyniku otrzymamy
fałsz.
Składnia:
!argument
Wynikiem iloczynu logicznego jest prawda tylko wtedy gdy oba argumenty też są
prawdziwe. Jeżeli tylko jeden jest fałszywy to wynikiem jest fałsz.
Składnia:
argument1 && argument2
Wynikiem sumy logicznej jest prawda wtedy jeżeli przynajmniej jeden argument jest
prawdziwy. Tylko jeżeli oba są fałszywe to wynikiem jest fałsz. Np:
01001010 - zmienna1
00101001 - zmienna2
01101011 - wynik
Składnia:
argument1 || argument2
Wynikiem jest prawda w tedy gdy wartości obu argumentów są takie same.
Składnia:
argument1 == argument2
Wynikiem jest prawda w tedy gdy wartości obu argumentów są różne.
Składnia:
argument1 != argument2
Wynikiem jest prawda w tedy gdy jest spełniony warunek że coś jest większe,
mniejsze, lub równe od siebie. Zależy on od operatora.
Składnia:
argument1 < argument2
argument1 <= argument2
argument1 > argument2
argument1 >= argument2
Argument występujący po lewej stronie przypisania (po lewej stronie znaku =) musi
być jedną wartością. Oprócz operatora = istnieją inne. Mają one znaczenie według
poniższego schematu:
a op= b
Jest to równe:
a = a op b
gdzie op jest operatorem który znajduje się po lewej stronie znaku =. Np:
a *= b;
jest równe zapisowi (albo jak kto woli jest skróconym zapisem):
a = a * b;
Jest to jedyny w języku C++ operator, w którym śa wymagane 3 argumenty. ma on następującą składnię:
warunek ? wyrażenie1 : wyrażenie2
Zawsze na początku jest obliczany warunek. Jeżeli jest on prawdziwy ( != 0 ) to
jest obliczany wrażenie1 a jeżeli warunek jest równy 0 to jest obliczane wyrażenie2.
Dodaje on liczbę 1 do zmiennej przy której ten operator występuje.
Jest to skrót ot wyrażenia:
a = a + 1; lub
a += 1;
Składnia:
++zmienna
zmienna++
Odejmuje on liczbę 1 do zmiennej przy której ten operator występuje.
Jest to skrót ot wyrażenia:
a = a - 1; lub
a -= 1;
Składnia:
--zmienna
zmienna--
Operator sizeof przekazuje liczbę bajtów będącą rozmiarem wyrażenia
lub specyfikatora typu. Może on występować w jednej z dwóch postaci:
sizeof (specyfikator_typu);
sizeof wyrażenie;