C# 4.0: полное руководство | страница 60
>char ch1 = 'a', ch2 = 'b';
>ch1 = (char) (ch1 + ch2);
Без приведения типов результат сложения операндов ch1 и 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;
> for ( n = 1.0; n <= 10; n++) {
> Console.WriteLine("Квадратный корень из {0} равен {1}",
> n, Math.Sqrt(n));
> Console.WriteLine("Целая часть числа: {0} ",
> (int)Math.Sqrt(n));
> Console.WriteLine("Дробная часть числа: {0} ",
> Math.Sqrt(n) - (int)Math.Sqrt(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
>Целая чaсть числа: 2
>Дробная часть числа: 0.449489742783178
>Квадратный корень из 7 равен 2.64575131106459
>Целая часть числа: 2
>Дробная часть числа: 0.645751311064591
>Квадратный корень из 8 равен 2.82842712474619
>Целая часть числа: 2
>Дробная часть числа: 0.82842712474619
>Квадратный корень из 9 равен 3