Операторы в 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 | Слева направо |
?: | условный | Справа налево |
= + = — = * = / =% = >> = << = & = ^ = | = | присваивание | Справа налево |
, | запятая | Слева направо |
Насколько сложной показалась вам эта тема? Напишите ответ в комментариях.
А можете выложить таблицу операторов для этих языков?
Добрый день. Как будет готова, обязательно выложим)))