ТОР 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 также может вызвать потерю точности, но не потерю значимости. В процессе других вариантов неявного преобразования никакая информация не теряется.
Не нашли, что искали? Воспользуйтесь поиском:
|