Операции выполняются над операндами (переменными и значениями) с использованием операторов. В C++ существует несколько типов операторов:
-
Арифметические операторы:
- Сложение (
+
), вычитание (-
), умножение (*
), деление (/
), остаток от деления (%
).
- Сложение (
-
Инкремент и декремент:
- Инкремент (
++
), декремент (--
).
int a = 5; a++; // a становится 6 a--; // a становится снова 5
- Инкремент (
-
Логические операторы:
- И (
&&
), ИЛИ (||
), НЕ (!
).
- И (
-
Побитовые операторы:
- И (
&
), ИЛИ (|
), исключающее ИЛИ (^
), побитовый сдвиг влево (<<
), побитовый сдвиг вправо (>>
). Побитовый сдвиг не затрагивает соседние ячейки памяти.
- И (
-
Операторы сравнения:
- Равно (
==
), не равно (!=
), больше (>
), меньше (<
), больше или равно (>=
), меньше или равно (<=
).
- Равно (
-
Операторы присваивания:
- Присваивание (
=
), присваивание с операцией (+=
,-=
,*=
,/=
,%=
и т.д.).
- Присваивание (
-
Другие операторы:
- Размер объекта (
sizeof
), приведение типов (static_cast
,dynamic_cast
,const_cast
,reinterpret_cast
).
- Размер объекта (
Пример программы с побитовыми операциями
#include <iostream>
using namespace std;
int main() {
unsigned int a = 0b10101010; // 170
unsigned int b = 0b01010101; // 85
// Побитовое И
unsigned int result_and = a & b;
cout << "a & b = " << result_and << endl; // 0b00000000 (0)
// Побитовое ИЛИ
unsigned int result_or = a | b;
cout << "a | b = " << result_or << endl; // 0b11111111 (255)
// Побитовое исключающее ИЛИ (XOR)
unsigned int result_xor = a ^ b;
cout << "a ^ b = " << result_xor << endl; // 0b11111111 (255)
// Побитовое НЕ
unsigned int result_not = ~a;
cout << "~a = " << result_not << endl; // 0b01010101 (в дополнении до 2-х: 85, если рассматривать как беззнаковое)
// Побитовый сдвиг влево
unsigned int result_shl = a << 1;
cout << "a << 1 = " << result_shl << endl; // 0b01010100 (340)
// Побитовый сдвиг вправо
unsigned int result_shr = a >> 1;
cout << "a >> 1 = " << result_shr << endl; // 0b01010101 (85)
return 0;
}