Операторы в C++

Все группы операторов C++: арифметические, сравнения, логические, присваивания, побитовые и тернарный — с таблицами и примерами.

Оператор — символ или слово, которое задаёт действие над одним или несколькими операндами и возвращает результат. В C++ операторы делятся на группы по назначению.

Арифметические операторы

Выполняют математические вычисления над числами.

Оператор

Действие

Пример

Результат

+

сложение

7 + 3

10

-

вычитание

7 - 3

4

*

умножение

7 * 3

21

/

деление

7 / 3

2 (целочисленное!)

%

остаток от деления

7 % 3

1

#include <iostream>
using namespace std;

int main() {
    int a = 7, b = 3;
    cout << a + b << "\n";   // 10
    cout << a - b << "\n";   // 4
    cout << a * b << "\n";   // 21
    cout << a / b << "\n";   // 2  — целочисленное деление, дробь отбрасывается
    cout << a % b << "\n";   // 1
    return 0;
}

Вывод:

10
4
21
2
1

Ловушка деления. При делении двух int дробная часть отбрасывается: 7 / 3 == 2, а не 2.33. Чтобы получить дробный результат, хотя бы один операнд должен быть double: 7.0 / 3 или (double)a / b.

Операторы сравнения

Сравнивают два значения и возвращают true или false. Используются в условиях.

Оператор

Смысл

==

равно

!=

не равно

>

больше

<

меньше

>=

больше или равно

<=

меньше или равно

#include <iostream>
using namespace std;

int main() {
    int x = 5;
    cout << (x == 5) << "\n";  // 1 (true)
    cout << (x != 5) << "\n";  // 0 (false)
    cout << (x > 3)  << "\n";  // 1
    cout << (x < 3)  << "\n";  // 0
    return 0;
}

Вывод:

1
0
1
0

Ловушка. = — это присваивание, == — сравнение. Написав if (x = 5) вместо if (x == 5), вы не сравниваете, а присваиваете 5 переменной x — условие всегда истинно.

Логические операторы

Комбинируют булевы условия.

Оператор

Смысл

Пример

&&

И — оба условия истинны

x > 0 && x < 10

||

ИЛИ — хотя бы одно истинно

x < 0 || x > 100

!

НЕ — инвертирует значение

!(x == 5)

#include <iostream>
using namespace std;

int main() {
    int x = 7;
    if (x > 0 && x < 10) {
        cout << "x в диапазоне 1–9\n";
    }
    if (x < 0 || x > 5) {
        cout << "x меньше 0 или больше 5\n";
    }
    cout << !true << "\n";   // 0 (false)
    return 0;
}

Вывод:

x в диапазоне 1–9
x меньше 0 или больше 5
0

Операторы присваивания

Присваивают переменной новое значение. Составные операторы — сокращённая запись арифметики плюс присваивание.

Оператор

Аналог

Пример

=

x = 5

+=

x = x + n

x += 3

-=

x = x - n

x -= 2

*=

x = x * n

x *= 4

/=

x = x / n

x /= 2

%=

x = x % n

x %= 3

#include <iostream>
using namespace std;

int main() {
    int x = 10;
    x += 5;   cout << x << "\n";  // 15
    x -= 3;   cout << x << "\n";  // 12
    x *= 2;   cout << x << "\n";  // 24
    x /= 4;   cout << x << "\n";  // 6
    x %= 4;   cout << x << "\n";  // 2
    return 0;
}

Вывод:

15
12
24
6
2

Инкремент и декремент

Увеличивают или уменьшают переменную на 1. Бывают префиксными (++x) и постфиксными (x++): оба изменяют переменную, но различаются тем, какое значение возвращается в выражении.

Форма

Возвращает

++x (префикс)

значение после увеличения

x++ (постфикс)

значение до увеличения

#include <iostream>
using namespace std;

int main() {
    int a = 5;
    cout << a++ << "\n";  // 5 — вернул старое, затем увеличил
    cout << a   << "\n";  // 6 — теперь 6
    cout << ++a << "\n";  // 7 — сначала увеличил, затем вернул
    return 0;
}

Вывод:

5
6
7

Тернарный оператор

Сокращённая запись if-else в одном выражении: условие ? значение_если_истина : значение_если_ложь.

#include <iostream>
using namespace std;

int main() {
    int x = 7;
    string result = (x % 2 == 0) ? "чётное" : "нечётное";
    cout << x << " — " << result << "\n";
    return 0;
}

Вывод:

7 — нечётное

Побитовые операторы

Работают прямо с битами числа. Редко нужны в начале обучения, но полезны в системном программировании и оптимизации.

Оператор

Действие

Пример (dec)

Результат

&

побитовое И

5 & 3

1

|

побитовое ИЛИ

5 | 3

7

^

XOR

5 ^ 3

6

~

инверсия битов

~5

-6

<<

сдвиг влево

1 << 3

8

>>

сдвиг вправо

8 >> 2

2

#include <iostream>
using namespace std;

int main() {
    cout << (5 & 3) << "\n";   // 1
    cout << (5 | 3) << "\n";   // 7
    cout << (1 << 3) << "\n";  // 8  (1 * 2^3)
    cout << (8 >> 2) << "\n";  // 2  (8 / 2^2)
    return 0;
}

Вывод:

1
7
8
2

Коротко

  • Арифметические: + - * / %; деление двух int — целочисленное, дробь теряется.
  • Сравнения: == != > < >= <=; не путайте = (присваивание) с == (сравнение).
  • Логические: && (И), || (ИЛИ), ! (НЕ).
  • Составное присваивание: += -= *= /= %= — сокращения для арифметики плюс присваивание.
  • Инкремент ++ / декремент --: префикс меняет до возврата, постфикс — после.
  • Тернарный: условие ? если_да : если_нет — удобная замена короткому if-else.
Проверьте себя
1. Что вернёт выражение `10 % 3` в C++?
A1
B3
C0
D3.33
2. Какой оператор проверяет, что ОБА условия истинны?
A&&
B||
C!
D==
3. Что делает оператор `+=` в выражении `x += 5`?
AСравнивает x с 5
BУстанавливает x равным 5
CПрибавляет 5 к x и сохраняет результат в x
DВычитает 5 из x
4. Какой оператор используется для проверки неравенства в C++?
A<>
B=/=
C!=
D~=