Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс_ред1 С#.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.8 Mб
Скачать

Вычисление остатка при целочисленном делении

Как мы говорили в предыдущем разделе, при целочисленном делении остаток отбрасывается. В некоторых случаях, однако, программисту нужен именно остаток от деления двух целых чисел, например чтобы узнать, делятся эти числа нацело или нет.

Для вычисления остатка при целочисленном делении в языке С# используется оператор деления по модулю %. Он применяется таким же образом, что и оператор деления, но в результате вычисляется не частное, а остаток.

Рассмотрим пример программы, демонстрирующей выполнение операций целочисленного деления и деления по модулю.

using System;

namespace MathOperators4

{

class MathOperatorsApp4

{

static void Main(string[] args)

{

System.Console.WriteLine(" 5 / 2 = {0}, 5 % 2 = {1}",

5/2, 5%2);

System.Console.ReadLine();

}

}

}

После выполнения этой программы получим:

Результат подтверждает, что если разделить 5 на 2, то частное будет равно двум, а остаток — единице. Деление по модулю на нуль, так же как и обычное целочисленное деление на нуль, в языке С# запрещено. Попытка выполнить такое деление приведет к возникновению исключительной ситуации, которую мы уже наблюдали.

Унарные операторы

До сих пор мы изучали бинарные (binary) операторы, работающие с двумя операндами. Однако в языке С# имеется также набор унарных (unary) операторов, имеющих дело только с одним операндом. Набор унарных операторов языка С# аналогичен набору унарных операторов языков С и C++:

Символ

Оператор

+

Унарный плюс

Унарный минус

++

Инкремент

– –

Декремент

!

Унарное логическое отрицание

~

Унарная поразрядная операция дополнения

(<тип>)

Преобразование типа выражения

Унарный плюс

Результатом выполнения унарного оператора плюс над числовым операндом является значение операнда, т. е. фактически унарный плюс не выполняет никаких действий над числовыми значениями.

Унарный минус

Унарный минус изменяет знак операнда на противоположный:

int х = -5;

int у = -х;

Здесь в первой строке унарный минус добавлен в качестве префикса к числовому литералу 5, в результате чего в переменную х будет записано отрицательное значение -5.

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

Инкремент и декремент

Операторы инкремента (+ +) и декремента (– –) могут использоваться либо в префиксной форме, либо в постфиксной форме. Префиксная форма предполагает размещение оператора перед операндом, а постфиксная — после операнда.

Вот примеры использования постфиксного оператора + +:

int х = 5;

x++;

В результате выполнения этого фрагмента кода переменная х будет содержать значение 6. По выполняемым результатам унарный оператор + +, использованный во второй строке, эквивалентен следующему бинарному оператору:

х = х + 1;

Аналогично вместо унарного оператора х-- можно использовать бинарный оператор:

х = х - 1;

Если используется префиксная форма унарного оператора инкремента или декремента, то содержимое переменной изменяется до ее чтения, а если постфиксная — после. Поясним это на примере.

Ниже мы использовали префиксный оператор инкремента, поэтому вначале содержимое переменной х увеличивается на единицу, а затем ее новое значение, равное шести, используется для инициализации переменной у:

int х = 5;

int у = ++х;

При использовании постфиксного оператора инкремента все будет по-другому:

int х = 5;

int у = х++;

Вначале переменная у будет проинициализирована исходным значением, хранящимся в переменной х, равным пяти. После этого содержимое переменной х увеличится на единицу.

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