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

C# предоставляет множество операторов. Большинство из них поддерживаются встроенными типами и позволяют осуществлять базовые операции со значением данных типов.

Эти операторы входят в следующие группы:

  1. Арифметические операторы (отвечают за выполнение арифметических операций).
  2. Операторы сравнения (выполняют сравнение числовых операндов).
  3. Логические (отвечают за логические операции с операндами bool).
  4. Операторы равенства (проверяют неравенство или равенство своих операндов).
  5. Операторы сдвига и битовые операторы (выполняют операции сдвига или битовые операции с операндами целочисленных типов).

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

Простейшие выражения 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) истинно.

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

Такие операторы работают с битами и выполняют побито вую операцию. Приведем таблицу истинности для &, |, и ^:

qp | qpp & qp ^ q
00000
11001
11110
01101

Теперь перечислим побитовые операторы, поддерживаемые языком 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Слева направо
?:условныйСправа налево
= + = — = * = / =% = >> = << = & = ^ = | =присваиваниеСправа налево
,запятаяСлева направо

Насколько сложной показалась вам эта тема? Напишите ответ в комментариях.

Образовательный портал 3TY.RU
Adblock
detector