Операция присваивания

Операция, обозначаемая знаком =, называется операцией присваивания. Данная операция является бинарной, имеет два операнда. Например, X=Y. Операнд слева от знака может быть только переменной, объектом. Операнд справа может быть выражением, т.е. записью, в которой используются знаки других операций. Как правило, операция = является главной операцией, образующей оператор присваивания.

Имеется интересная особенность этой операции. Она допускает цепочку присваиваний. Например, X=Y=Z=10.

Арифметические операции

Различают 5 операций, выполняющих арифметические действия над числами (табл.3.2).

 

Таблица 3.2. Арифметические операции в C#

Операция Назначение Пример
+ Сложение X = x + y
- Вычитание X = x – y
+ Умножение Z = x * y
/ Деление Z = x / y
% Деление по модулю Z = x % y

 

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

Деление по модулю возможно только для целых чисел. Оно обеспечивает получение остатка от деления двух целых чисел. Например, в результате операции 15 % 4 получится число 3. Таким образом, пара операций / и % обеспечивает для целых чисел специфическую возможность: можно получить и целую часть, и остаток от деления.

Арифметические операции можно объединять вместе с операцией присваивания, записывая две операции в виде одной. Это так называемая сокращённая форма записи.

Например, обычная запись: a = a + Stoim; сокращённая форма: a += Stoim;

К арифметическим операциям относятся две специфические операции – инкремент и декремент. Эти операции позволяют изменять значения переменных на 1. Инкремент – увеличивает, обозначается знаком ++. Декремент – уменьшает, обозначается знаком --. По сути дела, эти операции являются сокращённой формой записи для выражений типа
i = i +1 и i = i – 1. Например, вместо a = a + 1; можно записать: a++; (постфиксный вариант) или ++a; (префиксный вариант). Аналогично: --Prim; Prim--;

Между двумя последними формами нет никакой разницы, если эти операции являются единственными в записи выражения, т.е. используются самостоятельно. Если же речь идёт об использовании в сложном выражении, то приходится учитывать, когда на самом деле выполняются эти операции. Суть в том, что при постфиксном варианте записи значение переменной сначала используется, а потом изменяется на 1. При префиксном, наоборот, сначала изменяется, а потом используется.

Например:

t = 5; // t = 5

n = 4 * t++; // n = 20, t = 6

k = ++n / 3; // n = 21, k = 7

b = --k / t; // k = 6, b = 1


Поразрядные операции

В C# имеются операции, пригодные для обработки отдельных разрядов памяти (например, в видеопамяти графического дисплея). Такие операции называются поразрядными (операции с битами). Они позволяют изменять, считывать и сдвигать разряды в переменных. При этом переменная рассматривается не как число, а как комбинация двоичных разрядов, т.е. как логический код. Операция выполняется отдельно над каждым разрядом (табл.3.3).

Существует краткая форма поразрядных операций присваивания. Например: x &= y вместо x = x & y.

Поразрядные операции можно использовать только с целочисленными типами данных, к вещественным числам их применять нельзя.

 

Таблица 3.3. Поразрядные операции в C#

Операция Назначение Пример
& Поразрядное И i & 16
| Поразрядное ИЛИ i | 12
^ Поразрядное Исключающее ИЛИ k^ 10
~ Поразрядное НЕ ~a
>> Поразрядный сдвиг влево << 2
<< Поразрядный сдвиг вправо >> 2

 

Пример.

int k = 26;

k & 15 // 10

k | 15 // 31

k ^ 15; // 21

k << 2 // 104

k >> 2 // 6

// выделяем пятый бит в байте B, а остальные обнуляем

В = (B & 4);

Операции отношения

Все операции отношения используются для сравнения значений переменных или выражений. Эти операции вырабатывают значение булевского типа: ИСТИНА (true) или ЛОЖЬ (false). Численных эквивалентов для этих значений в языке C# не существует (табл.3.4).

Таблица 3.4. Операции отношения в C#

Операция Назначение Пример
== Равно I == 0
!= Не равно K!= 15
> Больше, чем Z > 15.2
< Меньше, чем T < -132.654
>= Больше или равно Z11 > = 0
<= Меньше или равно Y2 <= 10

Сравнение ненулевых вещественных чисел, полученных путём вычислений, возможно только с определённой точностью. Это связано с формой представления вещественных чисел (формат с плавающей запятой). Точное сравнение вещественных чисел возможно только с нулём. Однако числа формата Decimal можно сравнивать между собой на равно.

Логические операции

В языке C# определены три логические операции (табл.3.5). Одна из них является унарной, так как имеет один операнд, а две – бинарными, так как имеют два операнда.

Табл.3.5. Логические операции в C#

Оператор Описание
! Логическое отрицание. Изменяет логическое значение на противоположное
&& Логическое И. Результат равен true, только если оба операнда равны true
|| Логическое ИЛИ. Результат равен false, только если оба операнда равны false

Все эти операторы возвращают результаты типа bool.

Важно помнить, что для логического равно (т. е. для ответа на вопрос «Верно ли, что что-то равно чему-то?») используется знак двойного равенства (==). Знак же одинарного равенства (=) используется для присваивания. Для знака == существует парный знак!= («не равно»).

Отметим, что в C#, в отличие от многих языков программирования, нельзя вместо false использовать 0, а вместо true – любое ненулевое число. Рассмотрим пример:

Class Program

{

 ...

static void Main (string [] args)

{

  bool Param1 = true;

  bool Param2 = false; 

  { 

 Console.WriteLine (! Param1);

// False

 Console.WriteLine (Param1 &amp;&amp; Param2);

// False

 Console.WriteLine (Param1 || Param2);

// True

   }

 }

}

}

Такие операторы, как + (сложение), - (вычитание), * (умножение) и / (деление), записываются аналогично Object Pascal. Отметим только, что / (деление) применительно к целым числам дает целую часть от деления. Так, фрагмент

int k=100999, n=1000, s;

s=k/n;

Console.WriteLine (s.ToString())

выведет на экран 100, а не 101, т. е. никакого округления не происходит.

Оператор % является остатком от деления. Фрагмент

int k=100999, n=1000, s;

s=k%n;

Console.WriteLine (s.ToString());

выведет на экран 999.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: