Operatory C++

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:
  1. 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:
  1. 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.