Операции и целочисленные выражения
Операции группы, размещенной выше, имеют более высокий ранг, нежели операции групп, размещенных ниже. Например, 2 + 6/2 равно 5, так как операция / имеет более высокий ранг, нежели бинарная операция +. Начинающие программисты, забывая о приоритетах операций, иногда ошибаются, приводя для математического соотношения —— такое выражение: а/b * с. Его следует записать, используя Ь* с. В предыдущей… Читать ещё >
Операции и целочисленные выражения (реферат, курсовая, диплом, контрольная)
Операции языка C#
В предыдущей главе мы ввели понятие типа и рассмотрели классификацию типов, принятую в языке С#. Привели сведения о предельных значениях констант и переменных базовых (простых) типов. Тем самым для базовых типов определена совокупность допустимых значений. Чтобы полностью охарактеризовать базовые типы, требуется рассмотреть допустимые для них операции.
Набор операций языка C# весьма велик, и рассматривать возможности каждой из них мы будем постепенно по мере необходимости. Однако предварительно приведем список операций, разместив их в порядке уменьшения их приоритетов, называемых еще рангами и категориями (табл. 3.1 и 3.2).
Таблица 3.1
Операции, ассоциативные слева — направо
Операция. | Значение. |
Базовые (первичные) операции. | |
выбор члена (класса, структуры или объекта). | |
обращение к методу или к экземпляру делегата. | |
[]. | доступ по индексу (индексирование). |
+ +. | постфиксный инкремент. |
; | постфиксный декремент. |
new. | создание объекта (создание экземпляра). |
typeof. | идентификация типа. |
sizeof. | определение размера операнда (в байтах). |
stacklloc. | выделение памяти в стеке (только в опасном коде). |
nameof. | строковое представление имени (переменной, типа и т. д.). |
checked. | контроль за целочисленными переполнениями. |
unchecked. | отмена контроля за целочисленными переполнениями. |
-> | доступ к члену (объекта) по указателю (только в опасном коде). |
Операция. | Значение. |
null-условная или элвис-операция обращения к члену (класса, структуры) без генерации исключения, если член равен null. | |
default. | получение стандартного (умалчиваемого) значения типа. |
Унарные операции. | |
унарный плюс (задание знака). | |
; | унарный минус (задание знака). |
+ +. | префиксный инкремент. |
-; | префиксный декремент. |
~. | поразрядное отрицание. |
! | логическое отрицание. |
(тип). | приведение к заданному типу. |
&. | получение адреса (только в опасном коде). |
*. | разыменование указателя (только в опасном коде). |
await. | ожидание. |
Арифметические бинарные операции. | |
*. | умножение. |
деление. | |
%. | получение остатка при делении. |
сложение. | |
; | вычитание. |
Операции поразрядных сдвигов. | |
>> | поразрядный сдвиг вправо. |
<< | поразрядный сдвиг влево. |
Операции отношений (сравнений). | |
< | меньше. |
> | больше. |
< =. | меньше или равно. |
> =. | больше или равно. |
is. | сравнение типов операндов (возвращает логическое значение). |
as. | проверка типов (возвращает значение первого операнда или null). |
= =. | сравнение на равенство. |
! =. | сравнение на неравенство. |
?? | Сравнение с null («поглощение null» — если null, то возвратить стандартное значение). |
Операция. | Значение. |
Поразрядные операции. | |
&. | побитовое (поразрядное) И. |
побитовое (поразрядное) исключающее ИЛИ. | |
побитовое (поразрядное) ИЛИ. | |
Логические бинарные операции. | |
&. | конъюнкция (логическое И). |
дизъюнкция (логическое ИЛИ). | |
; | исключающая дизъюнкция. |
&&. | условная конъюнкция. |
II. | условная дизъюнкция. |
Тернарная операция. | |
условная операция. |
Таблица 3.2
Операции присваивания (ассоциативные справа — налево) и лямбда-операция.
Операция. | Значение. |
=. | присваивание. |
+ =. | сложение с присваиванием. |
— =. | вычитание с присваиванием. |
*=. | умножение с присваиванием. |
/=. | деление с присваиванием. |
%=. | получение остатка от деления с присваиванием. |
& =. | поразрядное И с присваиванием. |
А _. | поразрядное исключающее ИЛИ с присваиванием. |
1 =. | поразрядное ИЛИ с присваиванием. |
>> =. | поразрядный сдвиг вправо с присваиванием. |
< < =. | поразрядный сдвиг влево с присваиванием. |
= > | лямбда-операция. |
В табл. 3.1. операции объединены в группы. В каждую группу помещены операции одного ранга. Операции одного ранга из табл. 3.1 выполняются слева направо. Например, x*y/z будет вычисляться в соответствии с выражением (x*y)/z.
Операции группы, размещенной выше, имеют более высокий ранг, нежели операции групп, размещенных ниже. Например, 2 + 6/2 равно 5, так как операция / имеет более высокий ранг, нежели бинарная операция +. Начинающие программисты, забывая о приоритетах операций, иногда ошибаются, приводя для математического соотношения —— такое выражение: а/b * с. Его следует записать, используя Ь* с
скобки: а/(Ь * с), или без скобок так а/Ь/с.