Operatory

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.

Operatory i ich pierwszeństwo
OperatorOperacjaopis
::
::
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 arytmetycznezastę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

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ć.

Mnożenie

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

Dzielenie

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

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

Operatory bitowe działają osobno na poszczególnych bitach zmiennych

Przesuwanie bitów w lewo

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

Przesuwanie bitów w prawo

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

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

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
11001101 - zmienna2
01001001 - wynik
Działa on na argumentach całkowitych
Składnia:
zmienna1 & zmienna2

Różnica symetryczna

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
11001101 - zmienna2
10100110 - wynik
Działa on na argumentach całkowitych
Składnia:
zmienna1 ^ zmienna2

Alternatywa bitowa

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
11001101 - zmienna2
11101111 - wynik
Działa on na argumentach całkowitych
Składnia:
zmienna1 | zmienna2

Operatory porównania, relacji oraz operatory logiczne

Operatory te słóżą do obliczania wartości "prawda" lub "fałsz". Warunek prawdziwy daje wartość 1 natomiast fałszywy 0.

Negacja logiczna

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

Iloczyn logiczny

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

Suma logiczna

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

Równość

Wynikiem jest prawda w tedy gdy wartości obu argumentów są takie same. Składnia:
argument1 == argument2

Nierówność

Wynikiem jest prawda w tedy gdy wartości obu argumentów są różne. Składnia:
argument1 != argument2

Operatory relacji

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

Operatory przypisania

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;

Operator arytmetyczny if

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.

Operatory zwiększania i zmniejszania

Operator zwiększania

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++

Operator zmniejszania

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

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;