Без приведения типов результат сложения операндов chi и ch2 будет иметь тип int, и поэтому его нельзя присвоить переменной типа char.
Продвижение типов происходит и при выполнении унарных операций, например с унарным минусом. Операнды унарных операций более мелкого типа, чем int (byte, sbyte, short и ushort), т.е. с более узким диапазоном представления чисел, продвигаются к типу int. То же самое происходит и с операндом типа char. Кроме того, если выполняется унарная операция отрицания значения типа uint, то результат продвигается к типу long.
Приведение типов в выражениях
Приведение типов можно применять и к отдельным частям крупного выражения. Это позволяет точнее управлять преобразованиями типов при вычислении выражения. Рассмотрим следующий пример программы, в которой выводятся квадратные корни чисел от 1 до 10 и отдельно целые и дробные части каждого числового результата. Для этого в данной программе применяется приведение типов, благодаря которому результат, возвращаемый методом Math. Sqrt (), преобразуется в тип int.
// Пример приведения типов в выражениях.
using System;
class CastExpr {
static void Main() { double n;
Console.WriteLine ();
}
}
}
Вот как выглядит результат выполнения этой программы.
Квадратный корень из
1
равен 1
Целая часть числа: 1
Дробная часть числа:
0
Квадратный корень из
2
равен 1.4142135623731
Целая часть числа: 1
Дробная часть числа:
0
.414213562373095
Квадратный корень из
3
равен 1.73205080756888
Целая часть числа: 1
Дробная часть числа:
0
.732050807568877
Квадратный корень из
4
равен 2
Целая часть числа: 2
Дробная часть числа:
0
Квадратный корень из
5
равен 2.23606797749979
Целая часть числа: 2
Дробная часть числа:
0
.23606797749979
Квадратный корень из
6
равен 2.44948974278318
Целая ч^сть числа: 2
Дробная часть числа:
0
.449489742783178
Квадратный корень из
7
равен 2.64575131106459
Целая часть числа: 2
Дробная часть числа:
0
.645751311064591
Квадратный корень из
8
равен 2.82842712474619
Целая часть числа: 2
Дробная часть числа:
0
.82842712474619
Квадратный корень из
9
равен 3
Целая часть числа: 3
Др'обная часть числа:
0
Квадратный корень из
10 равен 3.16227766016838
Целая часть числа: 3
Дробная часть числа:
0
.16227766016838
Как видите, приведение результата, возвращаемого методом Math. Sqrt (), к типу int позволяет получить целую часть числа. Так, в выражении
Math.Sqrt(n) - (int) Math.Sqrt(n)
приведение к типу int дает целую часть числа, которая затем вычитается из всего числа, а в итоге получается дробная его часть. Следовательно, результат вычисления данного выражения имеет тип double. Но к типу int приводится только значение, возвращаемое вторым методом Math. Sqrt ().
ГЛАВА 4 Операторы
В языке C# предусмотрен обширный ряд операторов, предоставляющих программирующему возможность полного контроля над построением и вычислением выражений. Большинство операторов в C# относится к следующим категориям: арифметические, поразрядные, логические и операторы отношения. Все перечисленные категории операторов рассматриваются в этой главе. Кроме того, в C# предусмотрен ряд других операторов для_ особых случаев, включая индексирование массивов, доступ к членам класса и обработку лямбда-выражений. Эти специальные операторы рассматриваются далее в книге вместе с теми средствами, в которых они применяются.