Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
33
Добавлен:
29.02.2016
Размер:
5 Mб
Скачать

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

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

Примеры выражений:

(а + 0.12)/6 х && у || !z(t* Math.Sin(x)-l.05e4)/((2 *k+ 2) * (2 *k+ 3))

Операции выполняются в соответствии с приоритетами.Для изменения порядка выполнения операций используются круглые скобки. Если в одном выражении записано несколько операций одинакового приоритета, то унарные операции, условная операция и операции присваивания выполняютсясправа налево,остальные —слева направо.Например,

а = b = с означает a=(b=c),

a+b+cозначает (а + b) + с.

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

double

floatdecimal

longulong

int uint

short ushort

sbyte byte char

Преобразование типов в выражениях происходит неявно(без участия программистов) следующим образом: Если одни из операндов имеет тип, изображенный на более низком уровне, чем другой, то он приводится к типу второго операнда при наличии пути между ними. Если пути нет, то возникает ошибка компиляции (чтобы ее избежать, необходимо воспользоваться операцией явного преобразования). Если путей преобразования несколько, то выбирается наиболее короткий, не содержащий пунктирных линий.

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

Существует два вида преобразования типов:

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

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

Для простых типов существует большое количество неявных преобразований; для типов bool и string неявных преобразований не существует, зато они имеются у численных типов.

Неявные преобразования

Неявное преобразование не требует со стороны программиста никакой дополнительной работы и никакого дополнительного кода.

Для простых типов существует большое количество неявных преобразований; для типов bool и string неявных преобразований не существует, зато они имеются у численных типов.

Byte-short, ushort, int, uint, long, ulong, float, double, decimal

Sbyte- short, int, long, float, double, decimal

Short-int, long, float, double, decimal

Ushort-int, uint, long, ulong, float, double,Decimal

Int-long, float, double, decimal

Uint-long, ulong, float, double, decimal

Long-float, double, decimal

Ulong-float, double, decimal

Float-double

Char-ushort, int, uint, long, ulong, float,double, decimal

Явные преобразования.

Рассмотрим выполнение явных преобразований с помощью команд преобразования.

Для того чтобы тип преобразования мог осуществиться, передаваемая строка должна быть допустимым представлением числа и это число не должно приводить к переполнению. Допустимым называется такое представление числа, которое содержит необязательный знак (плюс или минус), ноль или несколько цифр, необязательную десятичную точку, за которой следует одна или несколько цифр, а также необязательный символ "е" или "Е", за которым следуют необязательный знак и одна или несколько цифр, и ничего более, кроме пробелов (располагающихся перед или после этой последовательности). Используя все эти дополнительные опции, мы можем распознавать строки типа -1.245е-24 как число.

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

Convert.ToBoolean(val)

val преобразовано в bool

Convert.ToByte(val)

val преобразовано в byte

Convert.ToChar(val)

val преобразовано в char

Convert.ToDecimal(val)

val преобразовано в decimal

Convert.ToDouble(val)

val преобразовано в double

Convert.Tolntl6(val)

val преобразовано в short

Convert.Tolnt32(val)

val преобразовано в int

Convert.Tolnt б 4(val)

val преобразовано в long

Convert.ToSByte(val)

val преобразовано в sbyte

Convert.ToSingle(val)

val преобразовано в float

Convert.ToString(val)

val преобразовано в string

Convert.ToUIntl6(val)

val преобразовано в ushort

Convert.ToUInt3 2(val)

val преобразовано в uint

Convert.ToUInt64(val)

val преобразовано в ulong

Соседние файлы в папке НПП_6_з_2013