КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
ЗАМЕЧАНИЕ. Операции присваивания
Операции присваивания Условная операция Условная операция (?:) — тернарная, то есть имеет три операнда. Ее формат: операнд_1? операнде: операнд_3 Первый операнд — выражение, для которого существует неявное преобразование к логическому типу. Если результат вычисления первого операнда равен true, то результатом условной операции будет значение второго операнда, иначе — третьего операнда. Вычисляется всегда либо второй операнд, либо третий. Их тип может различаться. Тип результата операции зависит от типа второго и третьего операндов:
2. иначе, если существует неявное преобразование типа от операнда 2 к операнду 3, но не наоборот, то типом результата операции становится тип операнда 3; 3. иначе, если существует неявное преобразование типа от операнда 3 к операн ду 2, но не наоборот, то типом результата операции становится тип операнда 2 4. иначе возникает ошибка компиляции. Условную операцию часто используют вместо условного оператора if для сокращения текста программы.
Пример применения условной операции: требуется, чтобы некоторая целая величина увеличивалась на 1, если ее значение не превышает n, а иначе принимала значение 1. Это удобно реализовать следующим образом: i = (i < n)? i + 1: 1; Условная операция правоассоциативна, то есть выполняется справа налево. Например, выражение Операции присваивания (=, +=, -=, *= и т. д.) задают новое значение переменной, а также свойству, событию или индексатору. Эти операции могут использоваться в программе как законченные операторы. Формат операции простого присваивания (=): переменная = выражение Механизм выполнения операции присваивания такой: вычисляется выражение и его результат заносится в память по адресу, который определяется именем переменной, находящейся слева от знака операции. То, что ранее хранилось в этой области памяти, естественно, теряется. Схематично это полезно представить себе так: Переменная <- Выражение Напомним, что константа и переменная являются частными случаями выражения.
Примеры операторов присваивания: а = b + с / 2; b = а; а = Ь: х = 1; х = х + 0.5; Обратите внимание: b = а и а = b — это совершенно разные действия! Чтобы не перепутать, что чему присваивается, запомните мнемоническое правило: присваивание — это передача данных «налево». Начинающие часто делают ошибку, воспринимая присваивание как аналог равенства в математике. Чтобы избежать этой ошибки, надо понимать механизм работы оператора присваивания. Рассмотрим для этого последний пример (х = х + 0.5). Сначала из ячейки памяти, в которой хранится значение переменной х, выбирается это значение. Затем к нему прибавляется 0.5, после чего получившийся результат записывается в ту же самую ячейку, а то, что хранилось там ранее, теряется безвозвратно. Операторы такого вида применяются в программировании очень широко. Для правого операнда операции присваивания должно существовать неявное преобразование к типу левого операнда. Например, выражение целого типа можно присвоить вещественной переменной, потому что целые числа являются подмножеством вещественных, и информация при таком присваивании не теряется: вещественнаяпеременная:= целоевыражение; Результатом операции присваивания является значение, записанное в левый операнд. Тип результата совпадает с типом левого операнда. В сложных операциях присваивания (+=, *-, /= и т. п.) при вычислении выражения, стоящего в правой части, используется значение из левой части. Например, при сложении с присваиванием ко второму операнду прибавляется первый, и результат записывается в первый операнд, то есть выражение а += b является более компактной записью выражения а = а + b. Результатом операции сложного присваивания является значение, записанное в левый операнд. ЗАМЕЧАНИЕ В документации написано, что тип результата совпадает с типом левого операнда, если он не менее int. Это означает, что если, например, переменные а и b имеют тип byte, присваивание а += b недопустимо и требуется преобразовать тип явным образом: а += (byte)b. Однако на практике компилятор ошибку не выдает. Напомню, что операции присваивания правоассоциативны, то есть выполняются справа налево, в отличие от большинства других операций (а = b = с означает а = (b = с)).
Дата добавления: 2014-01-07; Просмотров: 271; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |