Операции и выражения

ЗАМЕЧАНИЕ

Именованные константы

ВНИМАНИЕ

Переменные создаются при входе в их область действия (блок) и уничтожаются при выходе. Это означает, что после выхода из блока значение переменной не сохра­няется. При повторном входе в этот же блок переменная создается заново.

Можно запретить изменять значение переменной, задав при ее описании ключевое слово const, например:

 

const int b=1;

const float x=0.1, у=0.1f; // const распространяется на обе переменные

 

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

Улучшение читабельности происходит только при осмысленном выборе имен кон­стант. В хорошо написанной программе вообще не должно встречаться иных чисел, кроме 0 и 1, все остальные числа должны задаваться именованными константами с именами, отражающими их назначение.

Именованные константы должны обязательно инициализироваться при описа­нии. При инициализации можно использовать не только константу, но и выра­жение — главное, чтобы оно было вычисляемым на этапе компиляции, например:

 

const int b=1; а=100;

const int x=b*a+25;

Выражение — это правило вычисления значения. В выражении участвуют операнды, объединенные знаками операций. Операндами простейшего выражения могут быть константы, переменные и вызовы функций.

Например, а+2 — это выражение, в котором + является знаком операции, а а и 2 — операндами. Пробелы внутри знака операции, состоящей из нескольких сим­волов, не допускаются. По количеству участвующих в одной операции опе­рандов операции делятся на унарные, бинарные и тернарную. Операции С# при­ведены в табл. 3.11. В этой таблице символ х призван показать расположение операнда, и не является частью знака операции.

Таблица 3.1.Операции С#

Категория Знак операции Название Описание
Первичные . Доступ к элементу С. 105
х() Вызов метода или делегата С, 108, 221
х[] Доступ к элементу С. 127
x++ Постфиксный инкремент С. 47
x-- Постфиксный декремент С. 47
new Выделение памяти С. 48
typeof Получение типа С. 280
checked Проверяемый код С. 46
unchecked Непроверяемый код С. 46
Унарные + Унарный плюс  
- Унарный минус (арифметическое отрицание) С, 48
! Логическое отрицание С, 48
~ Поразрядное отрицание С. 48
++x Префиксный инкремент С, 47
--x Префиксный декремент С. 47
(тип)х Преобразование типа С. 49
Мультипликативные (типа умножения) * Умножение С. 50
/ Деление С, 50
% Остаток от деления С. 50
Аддитивные (типа сложения) + Сложение С.
- Вычитание С. 53
Сдвига и проверки типа << Сдвиг влево С. 54
>> Сдвиг вправо С. 54
< Меньше С. 54
> Больше С, 54
<= Меньше или равно С. 54
>= Больше или равно С. 54
is Проверка принадлежности типу С, 194
as Приведение типа С, 194
Проверки на равенство = = Равно С. 54
! = Не равно С. 54
Поразрядные логические & Поразрядная конъюнкция (И) С. 55
^ Поразрядное исключающее ИЛИ С. 55
| Поразрядная дизъюнкция (ИЛИ) С. 55
Условные логические && Логическое И С. 56
|| Логическое ИЛИ С. 56
Условная ?: Условная операция С, 56
Присваивания = Присваивание С. 56
*= Умножение с присваиванием  
/= Деление с присваиванием  
%= Остаток отделения с присваиванием  
+= Сложение с присваиванием  
-= Вычитание с присваиванием  
<<= Сдвиг влево с присваиванием  
>>= Сдвиг вправо с присваиванием  
&= Поразрядное И с присваиванием  
^= Поразрядное исключающее ИЛИ с присваиванием  
|= Поразрядное ИЛИ с присваиванием  

Операции в выражении выполняются в определенном порядке в соответствии с приоритетами, как и в математике. В табл. 3.1 операции расположены по убы­ванию приоритетов, уровни приоритетов разделены в таблице горизонтальными линиями.

Результат вычисления выражения характеризуется значением и типом. Например, пусть а и b — переменные целого типа и описаны так:

 

int а=2, b=5;

 

Тогда выражение а+b имеет значение 7 и тип int, а выражение а=b имеет значе­ние, равное помещенному в переменную b (в данному случае — 5), и тип, совпа­дающий с типом этой переменной.

Если в одном выражении соседствуют несколько операций одинакового при­оритета, операции присваивания и условная операция выполняются справа налево, остальные — слева направо. Для изменения порядка выполнения опе­раций используются круглые скобки, уровень их вложенности практически не ограничен.

Например, а+b+с означает (а+b)+с, а а=b=с означает а=(b=c). То есть сначала вычисляется выражение b = с, а затем его результат становится правым операндом для операции присваивания переменной а.