Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kompyuternye_tekhnologii_C.doc
Скачиваний:
8
Добавлен:
01.02.2015
Размер:
368.64 Кб
Скачать

5.5. Бесконечные циклы

Существует возможность с помощью кодирования ошибок и дизайна определять

так называемые бесконечные циклы, т.е. циклы, которые никогда не завершаются. В

качестве очень простого примера, рассмотрим следующий код:

while (true)

{

// код цикла

}

Такой цикл может быть полезен и его всегда можно прервать либо с помощью

оператора break, либо вручную через диспетчер задач Windows.

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

Все данные, независимо от типа, представляют собой последовательность битов, т.е. последовательность нулей и единиц. Предназначение переменной определяет способ, которым эти данные интерпретируются. Наиболее простым примером является тип char. Этот тип представляет символ из набора символов Unicode с использованием числа.

Однако, в общем, в разных типах переменных применяются разные схемы для

представления данных. Это означает, что даже если бы можно было помещать

последовательность битов из одной переменной в переменную другого типа, результаты могли бы быть совершенно не такими, как ожидалось.

Вместо такого взаимно однозначного сопоставления битов из одной переменной в

биты другой переменной, для данных необходимо применять технологии

преобразования шипов. Они бывают двух видов.

  • Неявное преобразование. Применяется, когда преобразования из типа А в тип

В возможно при любых обстоятельствах, и правила для выполнения

преобразования являются достаточно простыми для того, чтобы его можно было

доверить компилятору.

  • Явное преобразование. Применяется тогда, когда преобразование из типа А в

тип В возможно только при определенных обстоятельствах или когда правила

для преобразования являются достаточно сложными для того, чтобы было

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

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

Неявное преобразование не требует от разработчика ни приложения усилий, ни

написания дополнительного кода. Рассмотрим приведенный ниже код:

var1 = var2;

Эта операция присваивания может как подразумевать неявное преобразование,

если тип var2 может быть неявно преобразован в тип varl, так и не подразумевать,

если типы обеих переменных одинаковы.

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

Тип

Может быть преобразована в тип

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

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

Уже по названию понятно, что явное преобразование имеет место только тогда, когда разработчик явным образом просит компилятор преобразовать значение из одного типа данных в другой. Из-за этого оно подразумевает написание дополнительного кода, формат которого может выглядеть по-разному, в зависимости от того, какой конкретно метод преобразования требуется использовать.

Операция приведения, по сути, заключается в принудительном преобразовании

данных из одного типа в другой и подразумевает использование следующего простого

синтаксиса:

(целевой_тип) исходная_переменная

Примечание:

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

С помощью этого синтаксиса можно принудительно преобразовывать типы (из shortвbyte),:

byte destinationVar;

short sourceVar = 7;

destinationVar = (byte)sourceVar;

Console.WriteLine("значение sourceVar: {0}", sourceVar);

Console.WriteLine("значение destinationVar: {0}", destinationVar);

После этого вывод будет выглядеть так:

значение sourceVar: 7

значение destinationVar: 7

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]