С# — Операторы
Оператор — это символ, который указывает компилятору выполнять определенные математические или логические манипуляции. C# имеет богатый набор встроенных операторов и предоставляет следующие типы операторов —
- Арифметические операторы
- Операторы отношения
- Логические операторы
- Побитовые операторы
- Операторы присваивания
- Разные операторы
В этом руководстве последовательно объясняются арифметические, реляционные, логические, побитовые операции, операции присваивания и другие операции.
Арифметические операторы
В следующей таблице показаны все арифметические операторы, поддерживаемые C#. Предположим, переменная A содержит 10 и переменную B содержит 20, то −
Показать примеры
| Оператор | Описание | Пример |
|---|---|---|
| + | Добавляет два операнда | A + B =30 |
| - | Вычитает второй операнд из первого | A - B =-10 |
| * | Умножает оба операнда | A * B =200 |
| / | Делит числитель на знаменатель | В/А =2 |
| % | Оператор модуля и остаток после целочисленного деления | B % A =0 |
| ++ | Оператор приращения увеличивает целочисленное значение на единицу | А++ =11 |
| -- | Оператор декремента уменьшает целочисленное значение на единицу | A-- =9 |
Операторы отношения
В следующей таблице показаны все реляционные операторы, поддерживаемые C#. Предположим, переменная A содержит 10 и переменную B содержит 20, затем -
Показать примеры
| Оператор | Описание | Пример |
|---|---|---|
| == | Проверяет, равны ли значения двух операндов, если да, то условие становится истинным. | (A ==B) неверно. |
| != | Проверяет, равны ли значения двух операндов, если значения не равны, то условие становится истинным. | (A !=B) верно. |
| > | Проверяет, больше ли значение левого операнда, чем значение правого операнда, если да, то условие становится истинным. | (A> B) неверно. |
| < | Проверяет, меньше ли значение левого операнда значения правого операнда, если да, то условие становится истинным. | (A |
| >= | Проверяет, больше ли значение левого операнда или равно значению правого операнда, если да, то условие становится истинным. | (A>=B) неверно. |
| <= | Проверяет, меньше ли значение левого операнда или равно значению правого операнда, если да, то условие становится истинным. | (A <=B) верно. |
Логические операторы
В следующей таблице показаны все логические операторы, поддерживаемые C#. Предположим, переменная A содержит логическое значение true и переменную B содержит логическое значение false, затем -
Показать примеры
| Оператор | Описание | Пример |
|---|---|---|
| && | Вызывается оператор логического И. Если оба операнда отличны от нуля, условие становится истинным. | (A &&B) ложно. |
| || | Вызывается оператор логического ИЛИ. Если любой из двух операндов отличен от нуля, условие становится истинным. | (A || B) верно. |
| ! | Вызывается оператор логического НЕ. Используйте, чтобы изменить логическое состояние своего операнда на противоположное. Если условие истинно, то логический оператор НЕ сделает ложным. | !(A &&B) верно. |
Побитовые операторы
Побитовый оператор работает с битами и выполняет побитовые операции. Таблицы истинности для &, | и ^ следующие:
| p | q | p &q | p | д | p ^ q |
|---|---|---|---|---|
| 0 | <тд>0тд> <тд>0тд> <тд>0тд> <тд>0тд>||||
| 0 | <тд>1тд> <тд>0тд> <тд>1тд> <тд>1тд>||||
| 1 | <тд>1тд> <тд>1тд> <тд>1тд> <тд>0тд>||||
| 1 | <тд>0тд> <тд>0тд> <тд>1тд> <тд>1тд>
Предположим, если А =60; и В =13; то в двоичном формате они выглядят следующим образом —
А =0011 1100
Б =0000 1101
-------------------
А&В =0000 1100
А|В =0011 1101
А^В =0011 0001
~А =1100 0011
Побитовые операторы, поддерживаемые C#, перечислены в следующей таблице. Предположим, что переменная A содержит 60, а переменная B содержит 13, тогда −
Показать примеры
| Оператор | Описание | Пример |
|---|---|---|
| & | Двоичный оператор AND копирует бит в результат, если он существует в обоих операндах. | (A и B) =12, что равно 0000 1100 |
| | | Двоичный оператор ИЛИ копирует бит, если он существует в любом из операндов. | (A | B) =61, что равно 0011 1101 |
| ^ | Двоичный оператор XOR копирует бит, если он установлен в одном операнде, но не в обоих. | (A ^ B) =49, что равно 0011 0001 |
| ~ | Двоичный оператор дополнения к единице является унарным и имеет эффект "переворачивания" битов. | (~A ) =-61, что равно 1100 0011 в дополнении до 2 из-за двоичного числа со знаком. |
| < | Двоичный оператор сдвига влево. Значение левого операнда сдвигается влево на количество битов, указанное правым операндом. | A <<2 =240, что равно 1111 0000 |
| >> | Двоичный оператор сдвига вправо. Значение левого операнда сдвигается вправо на количество битов, указанное правым операндом. | A>> 2 =15, что равно 0000 1111 |
Операторы присваивания
Существуют следующие операторы присваивания, поддерживаемые C# —
Показать примеры
| Оператор | Описание | Пример |
|---|---|---|
| = | Простой оператор присваивания, присваивает значения из правых операндов левому операнду | C =A + B присваивает значение A + B в C |
| += | Добавить оператор присваивания AND. Он добавляет правый операнд к левому операнду и присваивает результат левому операнду | C +=A эквивалентно C =C + A |
| -= | Оператор вычитания И присваивания. Он вычитает правый операнд из левого операнда и присваивает результат левому операнду | C -=A эквивалентно C =C - A |
| *= | Оператор умножения И присваивания. Он умножает правый операнд на левый операнд и присваивает результат левому операнду | C *=A эквивалентно C =C * A |
| /= | Операция деления И присваивания. Он делит левый операнд на правый операнд и присваивает результат левому операнду | 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 |
| |= | побитовое ИЛИ и оператор присваивания | C |=2 совпадает с C =C | 2 |
Разные операторы
Есть несколько других важных операторов, включая sizeof, typeof. и ? : поддерживается C#.
Показать примеры
| Оператор | Описание | Пример |
|---|---|---|
| sizeof() | Возвращает размер типа данных. | sizeof(int), возвращает 4. |
| typeof() | Возвращает тип класса. | typeof(StreamReader); |
| & | Возвращает адрес переменной. | <тд>&а; возвращает фактический адрес переменной.|
| * | Указатель на переменную. | <тд>*а; создает указатель с именем 'a' на переменную.|
| ? : | Условное выражение | Если условие верно? Тогда значение X :В противном случае значение Y |
| является | Определяет, относится ли объект к определенному типу. | If(Ford is Car) // проверяет, является ли Ford объектом класса Car. |
| как | Приведение без возникновения исключения в случае сбоя приведения. | Object obj =new StringReader("Hello"); StringReader r =obj as StringReader; |
Приоритет оператора в C#
Приоритет оператора определяет группировку терминов в выражении. Это влияет на оценку выражения. Некоторые операторы имеют более высокий приоритет, чем другие; например, оператор умножения имеет более высокий приоритет, чем оператор сложения.
Например х =7 + 3 * 2; здесь x присваивается 13, а не 20, потому что оператор * имеет более высокий приоритет, чем +, поэтому первое вычисление происходит для 3*2, а затем к нему добавляется 7.
Здесь операторы с наивысшим приоритетом отображаются в верхней части таблицы, а с наименьшим — в нижней. В выражении сначала оцениваются операторы с более высоким приоритетом.
Показать примеры
| Категория | Оператор | Ассоциативность |
|---|---|---|
| Постфикс | () [] -> . ++ - - | Слева направо |
| Унарный | +- ! ~ ++ - - (тип)* &sizeof | Справа налево |
| Множественный | * / % | Слева направо |
| Добавка | <тд>+-тд>Слева направо | |
| Сдвиг | <тд><<>>тд>Слева направо | |
| Относительный | <<=>>= | Слева направо |
| Равенство | ==!= | Слева направо |
| Побитовое И | <тд>&тд>Слева направо | |
| Побитовое исключающее ИЛИ | <тд>^тд>Слева направо | |
| Побитовое ИЛИ | <тд>|тд>Слева направо | |
| Логическое И | <тд>&&тд>Слева направо | |
| Логическое ИЛИ | <тд>||тд>Слева направо | |
| Условное | <тд>?:тд>Справа налево | |
| Назначение | =+=-=*=/=%=>>=<<=&=^=|= | Справа налево |
| Запятая | <тд>,тд>Слева направо |
Язык C