Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Условная операция. Операции присваивания. Примеры использования.




Условная операция в C# часто используется вместо условного оператора if – then – else для организации ветвлений на две ветви, что приводит в целом к сокращению текста программы. Такая операция является тернарной, поскольку содержит три операнда. Общий вид операции:

Оп_1? Оп_2: Оп_3;

где

- Оп_1 –первый операнд:выражение, неявно приводимое к логическому типу, – условие ветвления;

- Оп_2 – второй операнд: его значение принимается за значение условной операции, если значение первого операнда равно true;

- Оп_3 – третий операнд: его значение принимается за значение условной операции, если значение первого операнда равно false.

Например:

max = b > а? b: а;

переменной max будет присвоено значение b, если выполняется условие (b> а), и значение а, если – нет.

В общем случае типы Оп_2 и Оп_3 могут не совпадать. Каков же тип результата данной операции будет в таком случае? Тип результата условной операции определяется по типам Оп_2 и Оп_3 в соответствии со следующими правилами:

- при совпадении типов Оп_2 и Оп_3 операндов их тип является типом результата операции;

- иначе, если существует неявное преобразование типа Оп_2 к типу Оп_3, но не существует неявное преобразование типа Оп_3 к типу Оп_2, то тип результата операции равен типу Оп_3;

- иначе, если существует неявное преобразование типа Оп_3 к типу Оп_2, но не существует неявное преобразование типа Оп_2 к типу Оп_3, то тип результата операции равен типу Оп_2;

- иначе возникает ошибка компиляции.

Присвоение переменной одного типа значения другого типа

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

Например: long h; double z; …..z=h;…. // допустимое преобразование, но может вызвать потерю точности, но не потерю значимости.

Обратное же автоматическое преобразование из double в long недопустимо, потому что оно не является расширяющим.

Невозможны также автоматические преобразования:

- между decimal и float или double;

- числовых типов в char или bool;

- между char и bool.

Преобразование из типов int, uint и long в тип float также может вызвать потерю точности, но не потерю значимости. В процессе других вари­антов неявного преобразования никакая информация не теряется.

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных