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

Опубликовано: 6 Октября, 2022

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

Оператор оперирует операндами . Например,

int c = a + b;

Здесь «+» — это оператор сложения. «a» и «b» — операнды, которые «добавляются».

Операторы в C++ можно разделить на 6 типов:

  1. Арифметические операторы
  2. Реляционные операторы
  3. Логические операторы
  4. Побитовые операторы
  5. Операторы присваивания
  6. Тернарные или условные операторы

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

Эти операторы используются для выполнения арифметических или математических операций над операндами. Например, «+» используется для сложения, «-» используется для вычитания, «*» используется для умножения и т. д.

Арифметические операторы можно разделить на 2 типа:

A) Унарные операторы: эти операторы оперируют или работают с одним операндом. Например: операторы увеличения (++) и уменьшения (–).

Имя Символ Описание Пример
Инкрементный оператор ++ Увеличивает целочисленное значение переменной на единицу

инт а = 5;

а++; // возвращает 6

Оператор декремента Уменьшает целочисленное значение переменной на единицу

инт а = 5;

а–; // возвращает 4

Пример:

Note: ++a and a++, both are increment operators, however, both are slightly different.

In ++a, the value of the variable is incremented first and then It is used in the program. In a++, the value of the variable is assigned first and then It is incremented. Similarly happens for the decrement operator.

Б) Бинарные операторы: Эти операторы оперируют или работают с двумя операндами. Например: сложение (+), вычитание (-) и т. д.

Имя Символ Описание Пример
Добавление + Добавляет два операнда

инт а = 3, б = 6;

интервал с = а+б; // с = 9

вычитание Вычитает второй операнд из первого

инт а = 9, б = 6;

интервал с = аб; // с = 3

Умножение * Умножает два операнда

инт а = 3, б = 6;

интервал с = а*б; // с = 18

Разделение / Делит первый операнд на второй операнд

инт а = 12, б = 6;

интервал с = а/б; // с = 2

Модульная операция % Возвращает остаток целочисленного деления

инт а = 8, б = 6;

интервал с = а% б; // с = 2

Note: The Modulo operator(%) operator should only be used with integers.

Пример:

2) Реляционные операторы

Эти операторы используются для сравнения значений двух операндов. Например, '>' проверяет, больше ли один операнд, чем другой операнд, и т. д. Результат возвращает логическое значение, т. е. истинно или ложно.

Имя Символ Описание Пример
Равно == Проверяет, равны ли оба операнда

инт а = 3, б = 6;

а==б;

// возвращает ложь

Лучше чем > Проверяет, больше ли первый операнд второго операнда

инт а = 3, б = 6;

а>б;

// возвращает ложь

Больше или равно >= Проверяет, является ли первый операнд большим или равным второму операнду

инт а = 3, б = 6;

а>=б;

// возвращает ложь

Меньше, чем < Проверяет, меньше ли первый операнд второго операнда

инт а = 3, б = 6;

а<б;

// возвращает истину

Меньше или равно <= Проверяет, меньше ли первый операнд второго операнда или равен ему

инт а = 3, б = 6;

а<=б;

// возвращает истину

Не равно знак равно Проверяет, не равны ли оба операнда

инт а = 3, б = 6;

а!=б;

// возвращает истину

Пример:

Здесь 0 означает ложь , а 1истину . Чтобы узнать больше об этом, пожалуйста, обратитесь к статье — Реляционные операторы.

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

Эти операторы используются для объединения двух или более условий или ограничений или для дополнения оценки исходного рассматриваемого условия. Результат возвращает логическое значение, т. е. true или false .

Имя Символ Описание Пример
Логическое И && Возвращает истину, только если все операнды истинны или не равны нулю

инт а = 3, б = 6;

а&&б;

// возвращает истину

Логическое ИЛИ || Возвращает истину, если любой из операндов истинен или отличен от нуля.

инт а = 3, б = 6;

а||б;

// возвращает истину

Логическое НЕ ! Возвращает истину, если операнд ложен или равен нулю

инт а = 3;

!а;

// возвращает ложь

Пример:

Здесь 0 означает ложь , а 1истину . Подробнее об этом читайте в статье «Логические операторы».

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

Эти операторы используются для выполнения битовых операций над операндами. Операторы сначала преобразуются в битовый уровень, а затем выполняется вычисление операндов. Математические операции, такие как сложение, вычитание, умножение и т. д., могут выполняться на уровне битов для более быстрой обработки.

Имя Символ Описание Пример
Двоичный И & Копирует бит в оцениваемый результат, если он существует в обоих операндах

инт а = 2, б = 3;

(а и б); // возвращает 2

Двоичное ИЛИ | Копирует бит в оцениваемый результат, если он существует в любом из операндов

инт а = 2, б = 3;

(а | б); //возвращает 3

Двоичный XOR ^ Копирует бит в оцениваемый результат, если он присутствует в одном из операндов, но не в обоих

инт а = 2, б = 3;

(а^б); // возвращает 1

Сдвиг влево << Сдвигает значение влево на количество битов, указанное правым операндом.

инт а = 2, б = 3;

(а << 1); //возвращает 4

Сдвиг вправо >> Сдвигает значение вправо на количество битов, указанное правым операндом.

инт а = 2, б = 3;

(а >> 1); // возвращает 1

Дополнение ~ Изменяет двоичные цифры 1 на 0 и 0 на 1

интервал б = 3;

(~б); //возвращает -4

Note: Only char and int data types  can be used with Bitwise Operators.

Пример:

Чтобы узнать больше об этом, пожалуйста, обратитесь к статье — Битовые операторы.

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

Эти операторы используются для присвоения значения переменной. Левый операнд оператора присваивания — это переменная, а правый операнд оператора присваивания — значение. Значение в правой части должно иметь тот же тип данных, что и переменная в левой части, иначе компилятор выдаст ошибку.

Имя Символ Описание Пример
Оператор присваивания знак равно Присваивает значение справа переменной слева

инт а = 2;

// а = 2

Оператор добавления и присваивания += Сначала добавляется текущее значение переменной слева к значению справа, а затем присваивается результат переменной слева

инт а = 2, б = 4;

а+=б; // а = 6

Оператор вычитания и присваивания знак равно Сначала вычитает значение справа от текущего значения переменной слева, а затем присваивает результат переменной слева

инт а = 2, б = 4;

а-=б; // а = -2

Оператор умножения и присваивания знак равно Сначала умножается текущее значение переменной слева на значение справа, а затем присваивается результат переменной слева.

инт а = 2, б = 4;

а*=б; // а = 8

Оператор деления и присваивания знак равно Сначала делит текущее значение переменной слева на значение справа, а затем присваивает результат переменной слева

инт а = 4, б = 2;

а /=б; // а = 2

Пример:

6) Тернарные или условные операторы (?:)

Этот оператор возвращает значение на основе условия.

Expression1? Expression2: Expression3

Тернарный оператор ? определяет ответ на основе оценки Expression1 . Если это правда , то Expression2 оценивается и используется в качестве ответа для выражения. Если Expression1 имеет значение false , то Expression3 оценивается и используется в качестве ответа для выражения.

Этот оператор принимает три операнда , поэтому он известен как тернарный оператор.

Пример:

7) Помимо рассмотренных выше операторов, в C++ доступны и другие распространенные операторы. Ниже приведен список этих операторов, обсуждаемых подробно:

A) оператор sizeof: этот унарный оператор используется для вычисления размера его операнда или переменной.

sizeof(char); // returns 1

B) Оператор-запятая (,): Этот бинарный оператор (представленный токеном) используется для оценки своего первого операнда и отбрасывания результата, затем он оценивает второй операнд и возвращает это значение (и тип). Он используется для объединения различных выражений вместе.

int a = 6;
int b = (a+1, a-2, a+5); // b = 10

C) -> Оператор: Этот оператор используется для доступа к переменным классов или структур.

cout<<emp->first_name;

D) Оператор приведения: этот унарный оператор используется для преобразования одного типа данных в другой.

float a = 11.567;
int c = (int) a; // returns 11

E) Оператор точки (.): Этот оператор используется для доступа к членам структурных переменных или объектов класса в C++.

cout<<emp.first_name;

F) & Оператор: это оператор указателя, который используется для представления адреса памяти операнда.

G) * Оператор: это оператор косвенного обращения

H) << Оператор: это оператор вывода. Он печатает выходное значение.

I) >> Оператор: Это оператор ввода. Он получает входное значение.

int a;
cin>>a;
cout<<a;

Таблица приоритетов операторов

Приоритет Оператор Описание Ассоциативность
1. () Скобки (вызов функции) слева направо
[] Скобки (индекс массива)
. Выбор элемента по имени объекта
-> Выбор элемента с помощью указателя
++/– Увеличение/уменьшение постфикса
2. ++/– Увеличение/уменьшение префикса справа налево
+/- Унарный плюс/минус
!~ Логическое отрицание/побитовое дополнение
(тип) Cast (преобразование значения во временное значение типа)
* Разыменование
& Адрес (операнда)
размер Определить размер в байтах в этой реализации
3. *,/,% Умножение/деление/модуль слева направо
4. +/- Сложение/вычитание слева направо
5. << , >> Побитовый сдвиг влево, Побитовый сдвиг вправо слева направо
6. < , <= Относительное меньше/меньше или равно слева направо
> , >= Относительное больше/больше или равно слева направо
7. == , != Реляционное равно/не равно слева направо
8. & Побитовое И слева направо
9. ^ Побитовое исключающее ИЛИ слева направо
10. | Побитовое включительно ИЛИ слева направо
11. && Логическое И слева направо
12. || Логическое ИЛИ слева направо
13. ?: Тернарное условное справа налево
14. знак равно Назначение справа налево
+= , -= Назначение сложения/вычитания
*= , /= Назначение умножения/деления
%= , &= Модуль/побитовое И присваивание
^= , |= Побитовое исключающее/включающее ИЛИ назначение
<>= Побитовый сдвиг влево/вправо
15. , разделитель выражений слева направо