Операции выполняются над операндами (переменными и значениями) с использованием операторов. В 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;
}