Учебники

3) Операторы C ++

Какие операторы?

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

Рассмотрим следующую операцию:

a = x + y;

В вышеприведенном утверждении x и y — операнды, а + — оператор сложения. Когда компилятор C ++ встречает вышеприведенный оператор, он добавляет x и y и сохраняет результат в переменной a.

В этом уроке C ++ вы узнаете:

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

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

оператор Описание
+ оператор сложения Добавляет к операндам.
— оператор вычитания Вычитает 2- й операнд из 1- го операнда.
* оператор умножения Умножает 2 операнда.
оператор деления. Делит числитель на знаменатель.
оператор% модуля Возвращает остаток после деления.
++ оператор приращения Увеличивает целочисленное значение на 1.
оператор декремента. Уменьшает целочисленное значение на 1.

Например:

#include <iostream>
using namespace std;
int main() {
	int a = 11;
	int b = 5;
	int c;

	cout << "a + b is :" << a+b << endl; //11+5

	cout << "a - b is :" << a-b << endl; //11-5

	cout << "a * b is :" << a*b << endl; //11*5

	cout << "a / b is :" << a/b << endl; //11/5

	cout << "a % b is :" << a%b << endl; //11%5

	cout << "a++ is :" << a++ << endl; //11++

	cout << "a-- is :" << a-- << endl; //12--

	return 0;
}

Вывод:

Вот скриншот кода:

Объяснение кода:

  1. Включение заголовочного файла iostream в наш код. Это позволит нам читать и писать в консоль.
  2. Включая пространство имен std, чтобы использовать его классы и функции без его вызова.
  3. Вызов функции main (), внутри которой должна быть добавлена ​​логика программы. {Отмечает начало тела функции main ().
  4. Объявление целочисленной переменной a и инициализация ее 11.
  5. Объявление целочисленной переменной b и инициализация ее 5.
  6. Объявление целочисленной переменной c.
  7. Выведите значение операции a + b вместе с другим текстом на консоли.
  8. Печать значения операции ab рядом с другим текстом на консоли.
  9. Выведите значение операции a * b вместе с другим текстом на консоли.
  10. Выведите значение операции a / b вместе с другим текстом на консоли.
  11. Выведите значение операции a% b рядом с другим текстом на консоли.
  12. Печать значения операции a ++ вместе с другим текстом на консоли.
  13. Печать значения операции a— вместе с другим текстом на консоли.
  14. Функция main () должна возвращать значение, если программа работает нормально.
  15. Конец тела функции main ().

Операторы отношений

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

Описание

оператор Описание
== равно оператору Проверяет равенство двух значений операнда.
! = не равно оператору Проверяет равенство двух значений операнда.
> отлично, чем оператор Проверяет, больше ли значение левого операнда, чем значение правого операнда.
<меньше, чем оператор. Проверяет, меньше ли значение левого операнда, чем значение правого операнда.
> = больше или равно оператору Проверяет, больше ли значение левого операнда или равно значению правого операнда.
<= меньше или равно оператору. Проверяет, меньше ли значение левого операнда или равно значению правого операнда.

Например:

#include <iostream>
using namespace std;

int main() {
	int a = 11;
	int b = 5;

	cout << "a=11, b=5" << endl;
	if (a == b) {
		cout << "a == b is true" << endl;
	}
	else {
		cout << " a == b is false" << endl;
	}

	if (a < b) {
		cout << "a < b is true" << endl;
	}
	else {
		cout << "a < b is false" << endl;
	}

	if (a > b) {
		cout << "a > b is true" << endl;
	}
	else {
		cout << "a > b is false" << endl;
	}

	return 0;
}

Вывод:

Вот скриншот кода:

Объяснение кода:

  1. Включение заголовочного файла iostream в наш код. Это позволит нам читать и писать в консоль.
  2. Включая пространство имен std, чтобы использовать его классы и функции без его вызова.
  3. Вызов функции main (), внутри которой должна быть добавлена ​​логика программы. {Отмечает начало тела функции main ().
  4. Объявление целочисленной переменной a и инициализация ее 11.
  5. Объявление целочисленной переменной b и инициализация ее 5.
  6. Распечатка некоторого текста на консоли с указанием значений переменных a и b.
  7. Выполняя арифметическую операцию, a == b в операторе принятия решения if, чтобы узнать, верно это или нет. {Отмечает начало тела оператора if.
  8. Текст для печати на консоли, если операция a == b выполнена верно. Endl — это ключевое слово C ++ для конечной строки. Он нажимает курсор, чтобы начать печать на следующей строке. } Отмечает конец тела оператора if.
  9. Остальная часть вышеприведенного оператора if. В нем указано, что делать, если операция a == b имеет значение false.
  10. Текст для печати на консоли, если операция a == b имеет значение false. Endl — это ключевое слово C ++ для конечной строки. Он нажимает курсор, чтобы начать печать на следующей строке. } Отмечает конец тела оператора else.
  11. Выполняя арифметическую операцию, a <b в операторе принятия решения if, чтобы узнать, является ли это истиной или ложью. {Отмечает начало тела оператора if.
  12. Текст для печати на консоли, если операция a <b истинна. Endl — это ключевое слово C ++ для конечной строки. Он нажимает курсор, чтобы начать печать на следующей строке. } Отмечает конец тела оператора if.
  13. Остальная часть вышеприведенного оператора if. В нем указано, что делать, если операция a <b ложна.
  14. Текст для печати на консоли, если операция a <b имеет значение false. Endl — это ключевое слово C ++ для конечной строки. Он нажимает курсор, чтобы начать печать на следующей строке. } Отмечает конец тела оператора else.
  15. Выполнение арифметической операции a> b в операторе принятия решения if, чтобы узнать, является ли оно истинным или ложным. {Отмечает начало тела оператора if.
  16. Текст для печати на консоли, если операция a> b истинна. Endl — это ключевое слово C ++ для конечной строки. Он нажимает курсор, чтобы начать печать на следующей строке. } Отмечает конец тела оператора if.
  17. Остальная часть вышеприведенного оператора if. В нем указано, что делать, если операция a> b ложна.
  18. Текст для печати на консоли, если операция a> b имеет значение false. Endl — это ключевое слово C ++ для конечной строки. Он нажимает курсор, чтобы начать печать на следующей строке. } Отмечает конец тела оператора else.
  19. Функция main () должна возвращать значение, если программа работает нормально.
  20. Конец тела функции main ().

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

Логические операторы объединяют два / более ограничений / условий. Логические операторы также дополняют оценку исходного рассматриваемого условия. Они включают:

оператор Описание
&& логический оператор AND. Условие истинно, если оба операнда не равны нулю.
|| логический оператор ИЛИ. Условие истинно, если один из операндов отличен от нуля.
! логический оператор НЕ. Это меняет логическое состояние операнда. Если операнд истинен, то! Оператор делает это ложным.

Например:

#include <iostream> 
using namespace std;
int main()
{
	int a = 5, b = 2, c = 6, d = 4;
	if (a == b && c > d)
		cout << "a equals to b AND c is greater than d\n";
	else
		cout << "AND operation returned false\n";

	if (a == b || c > d)
		cout << "a equals to b OR c is greater than d\n";
	else
		cout << "Neither a is equal to b nor c is greater than d\n";

	if (!b)
		cout << "b is zero\n";
	else
		cout << "b is not zero";

	return 0;
}

Вывод:

Вот скриншот кода:

Объяснение кода:

  1. Включение заголовочного файла iostream в наш код. Это позволит нам читать и писать в консоль.
  2. Включая пространство имен std, чтобы использовать его классы и функции без его вызова.
  3. Вызов функции main (), внутри которой должна быть добавлена ​​логика программы.
  4. {Отмечает начало тела функции main ().
  5. Объявление 4 целочисленных переменных a, b, c и d и присвоение им разных значений.
  6. Использование оператора && (AND) внутри оператора if. Он объединяет два условия: значение a равно значению b, а значение a больше значения b. Первое условие ложно, второе условие верно. False && true равно False, следовательно, результат if равен false.
  7. Текст для печати на консоли, если приведенный выше оператор if верен. Это не будет выполнено.
  8. Часть, которая будет выполнена, если приведенное выше условие if ложно.
  9. Текст для печати на консоли, если утверждение if ложно. Это будет выполнено.
  10. Используя || (ИЛИ) в операторе if. Он объединяет два условия: значение a равно значению b, а значение a больше значения b. Первое условие ложно, второе условие верно. False || true — это True, следовательно, результат if равен true.
  11. Текст для печати на консоли, если приведенный выше оператор if верен. Это будет выполнено.
  12. Часть, которая будет выполнена, если приведенное выше условие if ложно.
  13. Текст для печати на консоли, если утверждение if ложно. Это не будет выполнено.
  14. Проверка, является ли значение переменной 0.
  15. Текст для печати на консоли, если приведенный выше оператор if верен. Это не будет выполнено.
  16. Часть, которая будет выполнена, если приведенное выше условие if ложно.
  17. Текст для печати на консоли, если утверждение if ложно. Это будет выполнено.
  18. Функция main () должна возвращать значение, если программа работает нормально.
  19. Конец тела функции main ().

Битовые операторы

Битовые операторы выполняют операции на уровне битов над операндами. Сначала операторы преобразуются в битовый уровень, затем выполняются операции над операндами. Когда арифметические операции, такие как сложение и вычитание, выполняются на уровне битов, результаты могут быть достигнуты быстрее. Они включают:

оператор Описание
& (побитовое И). Требуется 2 числа (операнды), а затем выполняется И для каждого бита двух чисел. Если оба равны 1, И возвращает 1, иначе 0.
| (побитовое ИЛИ) Принимает 2 числа (операнды), затем выполняет ИЛИ для каждого бита двух чисел. Возвращает 1, если один из битов равен 1.
^ (побитовый XOR) Принимает 2 числа (операнды), затем выполняет XOR для каждого бита 2 чисел. Возвращает 1, если оба бита различны.
<< (сдвиг влево) Принимает два числа, затем сдвигает влево биты первого операнда. Второй операнд определяет общее количество мест для сдвига.
>> (сдвиг вправо) Берет два числа, затем сдвигает вправо биты первого операнда. Второй операнд определяет количество мест для сдвига.
~ (поразрядно НЕ). Принимает число, затем инвертирует все его биты.
#include <iostream>
using namespace std;

int main() {
	unsigned int p = 60;	  // 60 = 0011 1100  
	unsigned int q = 13;	  // 13 = 0000 1101
	int z = 0;

	z = p & q;
	cout << "p&q is : " << z << endl; // 12 = 0000 1100

	z = p | q;
	cout << "p|q is : " << z << endl; // 61 = 0011 1101

	z = p ^ q;
	cout << "p^q is : " << z << endl; // 49 = 0011 0001

	z = ~p;
	cout << "~p is : " << z << endl; // -61 = 1100 0011

	z = p << 2;
	cout << "p<<2 is: " << z << endl; // 240 = 1111 0000

	z = p >> 2;
	cout << "p>>2 is : " << z << endl; // 15 = 0000 1111

	return 0;
}

Вывод:

Вот скриншот кода:

Объяснение кода:

  1. Включение заголовочного файла iostream в наш код. Это позволит нам читать и писать в консоль.
  2. Включая пространство имен std, чтобы использовать его классы и функции без его вызова.
  3. Вызов функции main (), внутри которой должна быть добавлена ​​логика программы. {Отмечает начало тела функции main ().
  4. Объявляя целочисленные переменные без знака p и присваивая им значение 60, то есть 0011 1100 в двоичном виде.
  5. Объявление целочисленных переменных без знака q и присвоение ему значения 13, то есть 0000 1101 в двоичном виде.
  6. Объявление целочисленной переменной z и инициализация ее 0.
  7. Выполнение побитовой операции & (AND) для переменных p и q и сохранение результата в переменной z.
  8. Печать результата вышеуказанной операции на консоли вместе с другим текстом.
  9. Выполнение побитового | (ИЛИ) операция над переменными p и q и сохранение результата в переменной z.
  10. Печать результата вышеуказанной операции на консоли вместе с другим текстом.
  11. Выполнение побитовой операции ^ (XOR) над переменными p и q и сохранение результата в переменной z.
  12. Печать результата вышеуказанной операции на консоли вместе с другим текстом.
  13. Выполнение побитовой операции ~ (NOT) для переменных p и q и сохранение результата в переменной z.
  14. Печать результата вышеуказанной операции на консоли вместе с другим текстом.
  15. Выполнение операции левого сдвига для переменной p и сохранение результата в переменной z.
  16. Печать результата вышеуказанной операции на консоли вместе с другим текстом.
  17. Выполнение операции правого сдвига для переменной p и сохранение результата в переменной z.
  18. Печать результата вышеуказанной операции на консоли вместе с другим текстом.
  19. Функция main () должна возвращать значение, если программа работает нормально.
  20. Конец тела функции main ().

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

Операторы присваивания присваивают значения переменным. Операнд / переменная добавляется в левую часть оператора, а значение добавляется в правую часть оператора. Переменная и значение должны принадлежать одному типу данных, в противном случае компилятор C ++ вызовет ошибку. Например:

x = 5;

В приведенном выше примере x — это переменная / операнд, = — оператор присваивания, а 5 — значение. Вот популярные операторы присваивания в C ++:

оператор Описание
= (простой оператор присваивания) Он присваивает значение справа переменной слева.
+ = (Добавить оператор присваивания И) Сначала он добавляет значение левого операнда к значению правого операнда, а затем присваивает результат переменной слева.
— = (оператор вычитания И присваивания) Сначала он вычитает значение правого операнда из значения левого операнда, а затем присваивает результат переменной слева.
* = (Оператор умножения И присваивания) Сначала он умножает значение левого операнда на значение правого операнда, а затем присваивает результат переменной слева.
/ = (Оператор деления И присвоения) Сначала он делит значение левого операнда на значение правого операнда, а затем присваивает результат переменной слева.

Например:

#include <iostream> 
using namespace std;
int main()
{
	int x = 5;
	cout << "Initial value of x is " << x << "\n";

	x += 5;
	cout << "x += 5 gives :" << x << "\n";

	x -= 5;
	cout << "x -= 5 gives : " << x << "\n";

	x *= 5;
	cout << "x *= 5 gives :" << x << "\n";

	x /= 5;
	cout << "x /= 5 gives : " << x << "\n";

	return 0;
}

Вывод:

Вот скриншот кода:

Объяснение кода:

  1. Включение заголовочного файла iostream в наш код. Это позволит нам читать и писать в консоль.
  2. Включая пространство имен std, чтобы использовать его классы и функции без его вызова.
  3. Вызов функции main (), внутри которой должна быть добавлена ​​логика программы.
  4. {Отмечает начало тела функции main ().
  5. Объявляя целочисленные переменные x и присваивая ему значение 5.
  6. Печать значения переменной x вместе с другим текстом на консоли. \ N является символом новой строки. Он перемещает курсор на следующую строку при печати.
  7. Добавление 5 к значению переменной x и присвоение результата переменной x.
  8. Печать значения переменной x на консоли вместе с другим текстом.
  9. Вычитание 5 из значения x и присвоение результата переменной x.
  10. Печать значения переменной x на консоли вместе с другим текстом.
  11. Умножение значения переменной x на 5 и присвоение результата переменной x.
  12. Печать значения переменной x на консоли вместе с другим текстом.
  13. Деление значения переменной x на 5 и присвоение результата переменной x.
  14. Печать значения переменной x на консоли вместе с другим текстом.
  15. Функция main () должна возвращать значение, если программа работает нормально.
  16. Конец тела функции main ().

Разный оператор

Давайте обсудим другие операторы, поддерживаемые C ++:

оператор sizeof

Этот оператор определяет размер переменной. Используйте оператор sizeof для определения размера типа данных. Например:

#include <iostream> 
using namespace std;
int main() {
	cout<<"Size of int : "<< sizeof(int) << "\n";

	cout<<"Size of char : " << sizeof(char) << "\n";

	cout<<"Size of float : " << sizeof(float) << "\n";

	cout<<"Size of double : " << sizeof(double) << "\n";

	return 0;
}

Вывод:

Вот скриншот кода:

Объяснение кода:

  1. Включение заголовочного файла iostream в наш код. Это позволит нам читать и писать в консоль.
  2. Включая пространство имен std, чтобы использовать его классы и функции без его вызова.
  3. Вызов функции main (), внутри которой должна быть добавлена ​​логика программы. {Отмечает начало тела функции main ().
  4. Определите размер целочисленного типа данных с помощью оператора sizeof и напечатайте его вместе с другим текстом на консоли.
  5. Определите размер символьного типа данных с помощью оператора sizeof и напечатайте его вместе с другим текстом на консоли.
  6. Определите размер типа данных с плавающей запятой с помощью оператора sizeof и напечатайте его вместе с другим текстом на консоли.
  7. Определите размер типа данных с плавающей запятой с помощью оператора sizeof и напечатайте его вместе с другим текстом на консоли.
  8. Функция main () должна возвращать значение, если программа работает нормально.
  9. Конец тела функции main ().

Оператор запятой

Оператор запятой (,) запускает выполнение последовательности операций. Он выражает первый операнд и отбрасывает результат. Затем он оценивает второй операнд и возвращает значение и тип.

#include <iostream>
using namespace std;
int main() {
	int x, y;
	y = 100;
	x = (y++, y + 10, 99 + y);
	cout << x;
	return 0;
}

Вывод:

Вот скриншот кода:

Объяснение кода:

  1. Включение заголовочного файла iostream в наш код. Это позволит нам читать и писать в консоль.
  2. Включая пространство имен std, чтобы использовать его классы и функции без его вызова.
  3. Вызов функции main (), внутри которой должна быть добавлена ​​логика программы. {Отмечает начало тела функции main ().
  4. Объявление двух целочисленных переменных x и y.
  5. Присвоение переменной ya значения 100.
  6. Увеличивая значение y и присваивая результат переменной x. Он начинается с y на 100, затем увеличивает его до 101 (y ++). Затем y добавляется к 10. Наконец, y, все еще на 101, добавляется к 99, давая 200. х теперь 200.
  7. Вывод значения переменной x на консоль.
  8. Функция main () должна возвращать значение, если программа работает нормально.
  9. Конец тела функции main ().

Условный оператор

Этот оператор оценивает состояние и действует на основе результатов оценки.

Синтаксис:

Condition ? Expression2 : Expression3;

Параметры:

  • Условие — это условие, которое должно быть оценено.
  • Expression1 — это выражение, которое должно быть выполнено, если условие истинно.
  • Expression3 — это выражение, которое должно быть выполнено, если условие ложно.

Например:

#include <iostream>
using namespace std;
int main() {
	int a = 1, b;
	b = (a < 10) ? 2 : 5;
	cout << "value of b: " << b << endl;
	return 0;
}

Вывод:

Вот скриншот кода:

Объяснение кода:

  1. Включение заголовочного файла iostream в наш код. Это позволит нам читать и писать в консоль.
  2. Включая пространство имен std, чтобы использовать его классы и функции без его вызова.
  3. Вызов функции main (), внутри которой должна быть добавлена ​​логика программы. {Отмечает начало тела функции main ().
  4. Объявление двух целочисленных переменных a и b. Переменной a присвоено значение 1.
  5. Присвоение значения переменной b. Если переменная a меньше 10, b будет присвоено значение 2, в противном случае b будет присвоено значение 5.
  6. Печать значения переменной b на консоли вместе с другим текстом.
  7. Функция main () должна возвращать значение, если программа работает нормально.
  8. Конец тела функции main ().

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

Одна операция может иметь более одного оператора. В этом случае приоритет оператора определяет тот, который вычисляется первым.

В следующем списке показан приоритет операторов в C ++ с уменьшением приоритета слева направо:

(), [], *, /,%, +/-, <<, >>, ==,! =, ^, |, &&, ||,?:, =, + =, — =, 8 = знак равно

Резюме:

  • Операторы являются символами для выполнения логических и арифметических операций.
  • Арифметические операторы помогают нам выполнять различные арифметические операции над операндами.
  • Реляционные операторы помогают нам выполнять различные операции сравнения над операндами.
  • Логические операторы помогают нам выполнять различные логические операции над операндами.
  • Побитовые операторы помогают нам выполнять побитовые операции над операндами.
  • Операторы присваивания помогают нам выполнять различные арифметические операции над операндами.
  • Оператор sizeof возвращает размер переменной или типа данных.
  • Оператор запятой выполняет последовательность операций.
  • Условный оператор оценивает условие и действует в зависимости от результата.