Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie ответы.docx
Скачиваний:
10
Добавлен:
26.04.2019
Размер:
260.09 Кб
Скачать

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

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

Оп_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 также может вызвать потерю точности, но не потерю значимости. В процессе других вари­антов неявного преобразования никакая информация не теряется.

28. Операции отношения и проверки на равенство. Операция отрицания. Примеры использования.

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

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

Логические же значения true и false C# не рассматривает как упорядоченные, а, следовательно, к ним применимы только две операции отношения: == (равно) и != (не равно). Указанные две операции в C# можно применять вообще к любым объектам.

(Отрицание не нашел)

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