Operator to symbol w języku programowania C++, który mówi kompilatorowi, aby wykonał określoną operację matematyczną, logiczną lub innego rodzaju na jednej lub więcej zmiennych lub wartościach, zwanych operandami. Operatory w C++ dzielą się na różne kategorie, w zależności od rodzaju wykonywanych operacji. Poniżej przedstawiam omówienie głównych typów operatorów w C++ wraz z przykładami.
1. Operator przypisania
Operator przypisania (
=
) służy do przypisywania wartości do zmiennej. Podstawowym działaniem jest kopiowanie wartości po prawej stronie operatora do zmiennej znajdującej się po lewej stronie.
Przykład:
int a = 5;
a = 10; // Przypisuje wartość 10 do zmiennej a.
2. Operatory arytmetyczne
Operatory arytmetyczne służą do wykonywania podstawowych operacji matematycznych, takich jak dodawanie, odejmowanie, mnożenie, dzielenie i reszta z dzielenia.
- Dodawanie (
+
)
- Odejmowanie (
-
)
- Mnożenie (
*
)
- Dzielenie (
/
)
- Reszta z dzielenia (modulo) (
%
)
Przykłady:
int suma = 5 + 3; // suma = 8
int roznica = 5 - 3; // roznica = 2
int iloczyn = 5 * 3; // iloczyn = 15
int iloraz = 10 / 2; // iloraz = 5
int reszta = 10 % 3; // reszta = 1
Inkrementacja i dekrementacja to operacje, które zwiększają lub zmniejszają wartość zmiennej o 1. W języku C++ istnieją dwie formy tych operacji: preinkrementacja/predekrementacja i postinkrementacja/postdekrementacja. Różnią się one momentem aktualizacji wartości zmiennej w odniesieniu do użycia zmiennej w wyrażeniu.
Preinkrementacja (++) i Predekrementacja (–)
Operatory preinkrementacji
++
i predekrementacji
--
są stosowane przed zmienną. Zwiększają lub zmniejszają wartość zmiennej o 1 przed jej użyciem w wyrażeniu.
Przykłady:
- Preinkrementacja:
int a = 5;
int b = ++a;
// Teraz a jest równa 6, b jest równa 6.
Predekrementacja:
int c = 5;
int d = --c;
// Teraz c jest równa 4, d jest równa 4.
Postinkrementacja (++) i Postdekrementacja (–)
Operatory postinkrementacji
++
i postdekrementacji
--
są stosowane po zmiennej. Zwiększają lub zmniejszają wartość zmiennej o 1 po jej użyciu w wyrażeniu.
Przykłady:
- Postinkrementacja:
int e = 5;
int f = e++;
// Teraz e jest równa 6, ale f jest równa 5.
Postdekrementacja:
int g = 5;
int h = g--;
// Teraz g jest równa 4, ale h jest równa 5.
Porównanie preinkrementacji/postinkrementacji i predekrementacji/postdekrementacji
Główna różnica między pre- a post- wersją inkrementacji i dekrementacji leży w kolejności operacji. W wersji „pre”, zmienna jest najpierw inkrementowana/dekrementowana, a dopiero potem jej wartość jest używana w wyrażeniu. W wersji „post”, najpierw używana jest bieżąca wartość zmiennej, a dopiero potem zmienna jest inkrementowana/dekrementowana.
Kiedy używać której operacji?
- Preinkrementacja/dekrementacja jest zwykle używana, gdy chcesz od razu użyć zaktualizowanej wartości zmiennej.
- Postinkrementacja/dekrementacja może być użyteczna, gdy potrzebujesz bieżącej wartości zmiennej przed jej zmianą, np. w pętlach lub przy przypisywaniu wartości do innej zmiennej.
Znaczenie w pętlach
Często spotykane jest użycie inkrementacji i dekrementacji w kontrolowaniu pętli, zwłaszcza
for
. Na przykład:
for(int i = 0; i < 10; ++i) {
cout << i << " ";
}
W tym przypadku, czy użyjesz
++i
czy
i++
nie ma różnicy dla działania pętli, ponieważ aktualizacja zmiennej
i
jest ostatnią operacją w cyklu pętli. Jednak w innych kontekstach, różnica między pre- a postinkrementacją/dekrementacją może być znacząca.
3. Operatory bitowe
Operatory bitowe wykonują operacje na bitach operandów. Są one użyteczne przy niskopoziomowej manipulacji danymi.
- AND bitowy (
&
)
- OR bitowy (
|
)
- XOR bitowy (
^
)
- Przesunięcie w lewo (
<<
)
- Przesunięcie w prawo (
>>
)
- NOT bitowy (negacja) (
~
)
int a = 5; // 0101 w binarnym
int b = 3; // 0011 w binarnym
int wynik = a & b; // wynik = 1 (0001 w binarnym)
4. Operatory porównania
Operatory porównania służą do sprawdzania relacji między dwoma wartościami. Wynikiem operacji jest wartość logiczna: prawda (
true
) lub fałsz (
false
).
- Równy (
==
)
- Nie równy (
!=
)
- Większy niż (
>
)
- Mniejszy niż (
<
)
- Większy lub równy (
>=
)
- Mniejszy lub równy (
<=
)
Przykłady:
bool test1 = (5 == 5); // test1 = true
bool test2 = (5 != 3); // test2 = true
bool test3 = (5 > 3); // test3 = true
5. Operatory logiczne
Operatory logiczne służą do łączenia wyrażeń logicznych. Operatory te zwracają wartość logiczną na podstawie wartości operandów.
- AND logiczny (
&&
)
- OR logiczny (
||
)
- NOT logiczny (negacja) (
!
)
Przykłady:
bool a = true;
bool b = false;
bool wynik1 = a && b; // wynik1 = false
bool wynik2 = a || b; // wynik2 = true
bool wynik3 = !a; // wynik3 = false
Podsumowanie
Operatory w C++ pełnią kluczową rolę w tworzeniu wyrażeń i instrukcji, pozwalając na wykonanie operacji matematycznych, logicznych, porównań i manipulacji bitami. Zrozumienie różnych typów operatorów i ich zastosowań jest fundamentalne dla efektywnego programowania w C++. Przykłady pokazują, jak stosować poszczególne operatory w praktyce, co jest niezbędne dla zrozumienia ich działania i efektywnego wykorzystania w kodzie.