Операторы в C и C++
C# предоставляет множество операторов. Большинство из них поддерживаются встроенными типами и позволяют осуществлять базовые операции со значением данных типов.
Эти операторы входят в следующие группы:
- Арифметические операторы (отвечают за выполнение арифметических операций).
- Операторы сравнения (выполняют сравнение числовых операндов).
- Логические (отвечают за логические операции с операндами bool).
- Операторы равенства (проверяют неравенство или равенство своих операндов).
- Операторы сдвига и битовые операторы (выполняют операции сдвига или битовые операции с операндами целочисленных типов).
Обычно можно выполнить перегрузку данных операторов. Другими словами, вы можете указать поведение оператора для операндов типа, определяемого пользователем.
Простейшие выражения C# — литералы (к примеру, реальные и целые числа) и имена переменных. С помощью операторов их можно объединить в сложные выражения.
Порядок выполнения операций в выражении определяют ассоциативность и приоритет операторов. Порядок вычисления, определяемый ассоциативностью и приоритетом операторов, изменяется с помощью скобок.
Арифметические операторы
Существуют следующие арифметические операторы, поддерживаемые языком C ++:
| Описание | Оператор | Пример |
| Плюсует два операнда | + | A + B даст 30 |
| Второй операнд вычисляется с первого | — | A — B даст -10 |
| Умножает операнды | * | A * B даст 200 |
| Делит числитель на де-числитель | / | B / A даст 2 |
| Оператор модуля и остаток после целочисленного деления | % | B% A даст 0 |
| Оператор приращения увеличивает целочисленное значение на единицу | ++ | A ++ даст 11 |
| Уменьшает целочисленное значение на единицу | — | A— даст 9 |
Реляционные операторы
Язык C++ поддерживает регулярные операторы, перечисленные в таблице:
| Описание | Оператор | Пример |
| Проверяет, равны ли значения операндов, если равны, то условие становится истинным. | == | (A == B) не соответствует действительности. |
| Равны ли значения операндов, если нет, условие становится истинным. | знак равно | (A! = B) истинно. |
| Превышает ли значение левого операнда значение правого, если превышает, то условие становится истинным. | > | (A> B) неверно. |
| Является ли значение левого операнда меньше значения правого, если да –условие становится истинным. | < | (A <B) истинно. |
| Превышает ли значение левого операнда значение правого, если да, то условие становится истинным. | > = | (A> = B) неверно. |
| Проверяет, является ли значение левого операнда меньше или равно значению правильного операнда, если да, тога условие становится истинным. | <= | (A <= B) истинно. |
Логические операторы
С++ поддерживает следующие логические операторы:
| Описание | Оператор | Пример |
| Вызывается логическим оператором AND. Если операнды отличны от нуля,тога условие становится истинным. | && | (A && B) являетсяложным. |
| Вызывается логическим оператором ИЛИ. Если один из двух операндов отличен от нуля, тога условие становится истинным. | || | (A || B) истинно. |
| Вызывается оператором NOT. Применяется для изменения логического состояния операнда. Если условие истинно, тога логический оператор NOT сделает ложным. | ! | ! (A && B) истинно. |
Побитовые операторы
Такие операторы работают с битами и выполняют побито вую операцию. Приведем таблицу истинности для &, |, и ^:
| q | p | q | p | p & q | p ^ q |
| 0 | 0 | 0 | 0 | 0 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
Теперь перечислим побитовые операторы, поддерживаемые языком C ++:
| Описание | Оператор | Пример |
| Двоичный оператор AND копирует бит в результат, если он присутствует в обоих операндах. | & | (A & B) даст 12, что= 0000 1100 |
| Двоичный оператор OR копирует бит, если он есть в любом из операндов. | | | (A | B) даст 61, который = 0011 1101 |
| Оператор двоичного XOR копирует бит, если он указан в один операнд, но не тот и другой. | ^ | (A ^ B) даст 49, который = 0011 0001 |
| Binary Ones. Унарный оператор дополнения имеет эффект «flipping» бит. | ~ | (~ A) даст -61, что = 1100 0011 в форме дополнения 2 из-за подписанного двоичного числа. |
| Двойной левый оператор сдвига. Значение левах операндов перемещается влево на то количество бит, которые были заданны правым операндом. | << | A << 2 даст 240, что = 1111 0000 |
| Двоичный оператор правого сдвига. Значение левах операндов перемещается вправо на то количество бит, которые были заданны правым операндом. | >> | A >> 2 даст 15, что = 0000 1111 |
Операторы присваивания
Существуют следующие операторы присваивания, поддерживаемые языком C ++:
| Описание | Оператор | Пример |
| Простой оператор присваивания, который присваивает значения из правых операндов в левый. | = | C = A + B присваивает значение A + B в C |
| Оператор Add AND присваивания, который добавляет правый операнд в левый и присваивает ему результат. | + = | C + = A эквивалентно C = C + A |
| Subtract AND assignoperator. Он вычитает правый операнд из левого, и присваивает ему результат. | = | C — = A эквивалентно C = C — A |
| Оператор умножения и присваивания, который умножает правый операнд на левый, и присваивает тому результат. | = | C * = A эквивалентно C = C * A |
| Оператор Divide AND assign. Он дельт левый операнд на правый, и присваивает результат. | = | C / = A эквивалентно C = C / A |
| Модуль и оператор присваивания, который принимает модуль с использованием двух операндов и присваивает результат левому операнду. | = | C% = A эквивалентно C = C% A |
| Оператор сдвига слева и. | << = | C << = 2 совпадает с C = C << 2 |
| Оператор правой смещения и назначения. | >> = | C >> = 2 совпадает с C = C >> 2 |
| Побитовый И оператор присваивания. | = | C & = 2 является таким же, как C = C & 2 |
| Побитовое исключающее ИЛИ и оператор присваивания. | ^ = | C ^ = 2 является таким же, как C = C ^ 2 |
| Побитовое включение оператора OR и присваивания. | | = | C | = 2 совпадает с C = C |2 |
Другие операторы
Приведем и другие операторы, которые поддерживает С ++:
| Описание | Оператор |
| Оператор возвращает раз мер переменной. К примеру, sizeof (a), где ‘a’ — целое число и будет возвращать 4. | sizeof |
| Если условие истинно, то оно возвращает значение X, в противном случае возвращает значение Y. | Condition ? X : Y |
| Оператор вызывает последовательность операций. Значение всего выражения запятой – это значение последнего выражения списка, который разделен запятыми. | , |
| Применяются для ссылки на отдельных членов классов, союзов и структур. | . (dot) and -> (arrow) |
| Преобразуют один тип данных в другой. К примеру, int (2.2000) вернет 2. | Cast |
| Оператор возвращает адрес переменной. К примеру, & a; даст переменной фактический адрес. | & |
| Указатель на переменную. К примеру, * var; будет указывать на переменную var. | * |
Приоритеты операторов в C ++
Приоритет оператора в С ++ задает группировку терминов в выражении, что влияет на оценку выражения. Приоритет некоторых операторов бывает более высоким по сравнению с другими. Например, оператор умножения более приоритетный, чем оператор сложения.
В таблице приведены операторы с самым высоким приоритетом (чем выше, тем приоритетнее):
| Оператор | Категория | Ассоциативность |
| () [] ->. ++ — — | постфикс | Слева направо |
| + -! ~ ++ — — (тип) * &sizeof | Одинарный | Справа налево |
| * /% | Multiplicative | Слева направо |
| + — | присадка | Слева направо |
| <<>> | сдвиг | Слева направо |
| <<=>> = | реляционный | Слева направо |
| ==! = | равенство | Слева направо |
| & | Побитовое AND | Слева направо |
| ^ | Побитовое XOR | Слева направо |
| | | Побитовое OR | Слева направо |
| && | Логические AND | Слева направо |
| || | Логический OR | Слева направо |
| ?: | условный | Справа налево |
| = + = — = * = / =% = >> = << = & = ^ = | = | присваивание | Справа налево |
| , | запятая | Слева направо |
Насколько сложной показалась вам эта тема? Напишите ответ в комментариях.

А можете выложить таблицу операторов для этих языков?
Добрый день. Как будет готова, обязательно выложим)))