Глава 3. Базовые типы данных, переменные
77
Таблица 3.4
(окончание)
Обозначение Пояснение
/
Деление
%
Деление по модулю
Пример использования унарного минуса:
int a=1;
int b=-a;
Результат:
b=-1
.
Так же применяется и унарный плюс, когда хотят точно определить, что
переменная будет положительной. Не путайте знак присвоения в записи
операторов и знак равенства в записи данного текста.
Бинарные операции сложения, вычитания и умножения особенностей не
имеют. А вот об операции деления так не скажешь. Она — со специфи-
кой. Ее результат — всегда целое число, если оба операнда целые, не
зависимо, есть ли остаток от деления. Если он имеется, то он отбрасы-
вается. Поэтому результат
25/4
будет равен 6. И только. Значит, чтобы
сохранить остаток, надо делать так, чтобы хотя бы один из операндов
был с плавающей точкой. Например,
int a=1;
double b=a/2.0;
Результат:
b=0.5
. Если бы написали
int a=1;
double b=a/2;
получили бы ноль в результате.
Операция деление по модулю — это операция получения остатка от
деления. Остаток от деления на 2 — операция по модулю 2, остаток от
деления на 10 — операция по модулю 10 и т. д. Эта операция интересна
только для чисел с плавающей точкой, т. к. при делении таких чисел
остаток получить напрямую невозможно. Если, например,
float a=1.2f;
float b=0.5f;
то
float c=a%b;
даст результат:
с=0.2
. А вот для целых чисел:
int a=12; int d=7; int c=a%d;
результат
с=5
.
78
Часть I. Базовые сведения о программировании на языке C#
Порядок выполнения арифметических операторов
Когда операторов в выражении больше двух, сразу возникает вопрос:
какой должен после какого выполняться? В С# принято, что выражение
вычисляется слева направо, но все-таки в зависимости от старшинства
операций (их приоритета). Например,
int a=2 + 3 * 4;
Результат:
a=14
.
Самый высокий приоритет имеют унарные операции, за ними в сторону
убывания следуют операции (
*
,
/
,
%
), а самый низкий приоритет у би-
нарных операций сложения и вычитания. Но наивысший приоритет
имеют все-таки круглые скобки, так что лучше пользоваться скобками.
Скобки перекрывают приоритеты операторов, явно указывая, как имен-
но компилятор должен интерпретировать выражение.
Оператор присваивания
Этим оператором мы пользовались буквально с первой созданной нами
программы. Мы уже поясняли его смысл: он присваивает значение вы-
ражения справа от знака равенства переменной слева от знака равенст-
ва. При этом по обе стороны знака равенства должны быть данные од-
ного типа. Здесь следует добавить, что C# позволяет строить цепочку
присвоений одного и того же значения разным переменным. Например,
если имеем
int a; int b; int c;
, то можно записать
a=b=c=2;
. При-
своение выполняется справа налево. Для упрощения записи в C# введе-
ны составные операторы присваивания вида:
<Переменная левой части> <Операция> <Знак присвоения>
<Переменная правой части>
В разрезе операций составные операторы показаны в табл. 3.5.
Таблица 3.5.
Составные операторы присваивания
Вид
оператора
Эквивалентная
запись
Пояснение
a += b
a = a + b
a
и
b
складываются. Результат — в
a
a -= b
a = a — b
Из
a
вычитается
b
. Результат — в
a
a *= b
a = a * b
a
умножается на
b
. Результат — в
a
a /= b
a = a / b
a
делится на
b
. Результат — в
a
a %= b
a = a % b
a
делится по модулю
b
. Результат — в
a
Do'stlaringiz bilan baham: |