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