Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Пример 3.1

Читайте также:
  1. Аналитическое программирование оборудования с ЧПУ: методы, примеры.
  2. Внутренняя двойственность лингвистики, на примерах
  3. Вопрос 4. Основные признаки социального действия по М. Веберу? Назовите виды социального действия, выделенные М. Вебером, и приведите их примеры.
  4. Гай. 3.148). - Мы имеем обыкновение вступать в товарищество или в отно­шении всего имущества, или для какого-нибудь одного дела, на­пример, для покупки или продажи рабов.
  5. Глава III. Проблема безработных и пути их решения в современном обществе на примере ЕС.
  6. Данные рассматриваемого примера
  7. Двухтактный полумостовой преобразователь можно построить на примере компьютерного блока питания.
  8. Для наглядности рассмотрим пример формирования активов и капитала нового предприятия (допустим, в форме ООО).
  9. Европейская интеграция как пример наиболее глубоких интеграционных процессов в современном мире
  10. Есть ограничения в доступности информации, например технологические, когда фирма держит в секрете технологию производства продукта.

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

Листинг 2.2. Преобразование типов

static void Main(string[] args)

{

short shortResult, shortVal = 4;

int integerVal = 67;

long longResult;

float floatVal = 10.5F;

double doubleResult, doubleVal = 99.999;

string stringResult, stringVal = "17";

bool boolVal = true;

Console.WriteLine("Примеры преобразования

переменных") ;

// Примеры преобразования переменных

doubleResult = floatVal * shortVal;

Console.WriteLine ("Неявные, - > double: {0} * {1} - > {2}", floatVal, shortVal, doubleResult);

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

shortResult = (short)floatVal;

Console.WriteLine("Явные - > short: {0} - > {1}", floatVal, shortResult);

// Явное преобразование

stringResult = Convert.ToString(boolVal) +

Convert.ToString(doubleVal);

Console.WriteLine("Явные -> string:\"{0}\"+\"{1}\"->{2}",

boolVal, doubleVal, stringResult);

// Явное преобразование

longResult = integerVal + Convert.ToInt64(stringVal);

Console.WriteLine ("Смешанное - > long: {0} + {1} - > {2}", integerVal, stringVal, longResult);

// Смешанное преобразование

Console.ReadKey();

}

Рис. 2.6. Приложение в действии

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

shortVal * floatVal

Здесь значение short умножается на значение float. В ситуациях, подобных этой, где не указано никакой явной операции преобразования, по возможности будет выполняться неявная операция преобразования. В данном примере единственной неявной операцией преобразования, в которой есть смысл, является преобразование типа short в тип float (поскольку для преобразования float в short требуется явная операция), поэтому именно она и будет использоваться.

При желании, однако, это поведение можно переопределить, как показано ниже:

shortVal * (short)floatVal

Это не означает, что в таком случае после операции будет возвращаться значение short.

Из-за того, что результат перемножения двух значений short, скорее всего, будет превышать 32767 (максимальное значение, которое может храниться в переменных типа short), на самом деле после этой операции будет возвращаться значение int.

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

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

doubleResult = floatVal + (shortVal * floatVal);

Здесь первой будет обрабатываться операция *, которая, как уже рассказывалось ранее, будет приводить к преобразованию shortVal во float. Далее будет обрабатываться операция +, которая не требует преобразования типов, поскольку имеет дело с двумя значениями float (а именно— floatVal и результатом вычисления shortVal * floatVal). И, наконец, последней будет обрабатываться операция =, при которой результат предыдущей операции, имеющий тип float, будет преобразовываться в тип double.

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

 


<== предыдущая страница | следующая страница ==>
Методы преобразования | Сканирующая туннельная микроскопия

Дата добавления: 2014-10-10; просмотров: 287; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.003 сек.