Операции присваивания
⇐ ПредыдущаяСтр 4 из 4 = присваивание Присвоить значение правого операнда левому. Результат операции присваивания – это значение правого операнда. +=, -=, *=, /=, %=, |=, &=, ^=, <<=, >>= выполнить операцию и присвоить Выполнить соответствующую операцию с левым операндом и правым операндом и присвоить результат левому операнду. Типы операндов должны быть такими, что, во-первых, для них должна быть определена соответствующая арифметическая операция, а во-вторых, результат может быть присвоен левому операнду. Порядок вычисления выражений У каждой операции имеется приоритет. Если в выражении несколько операций, то первой будет выполнена операция с более высоким приоритетом. Если же операции одного и того же приоритета, они выполняются слева направо. Например, в выражении 2 + 3 * 6 сначала будет выполнено умножение, а затем сложение; соответственно, значение этого выражения — число 20. В выражении 2 * 3 + 4 * 5 сначала будет выполнено умножение, а затем сложение. В каком порядке будет производиться умножение – сначала 2 * 3, а затем 4 * 5 или наоборот, не определено. Т.е. для операции сложения порядок вычисления ее операндов не задан. В выражении x = y + 3 вначале выполняется сложение, а затем присваивание, поскольку приоритет операции присваивания ниже, чем приоритет операции сложения. Для данного правила существует исключение: если в выражении несколько операций присваивания, то они выполняются справа налево. Например, в выражении x = y = 2 сначала будет выполнена операция присваивания значения 2 переменной y. Затем результат этой операции – значение 2 – присваивается переменной x. Ниже приведен список всех операций в порядке понижения приоритета. Операции с одинаковым приоритетом выполняются слева направо (за исключением нескольких операций присваивания).
:: (разрешение области видимости имен) . (обращение к элементу класса), -> (обращение к элементу класса по указателю), [] (индексирование), вызов функции, ++ (постфиксное увеличение на единицу), -- (постфиксное уменьшение на единицу), typeid (нахождение типа), dynamic_cast static_cast reinterpret_cast const_cast (преобразования типа) sizeof (определение размера), ++ (префиксное увеличение на единицу), -- (префиксное уменьшение на единицу), ~ (битовое НЕ),! (логическое НЕ), – (изменение знака), + (плюс), & (взятие адреса), * (обращение по адресу), new (создание объекта), delete (удаление объекта), (type) (преобразование типа) .* ->* (обращение по указателю на элемент класса) * (умножение), / (деление), % (остаток) + (сложение), – (вычитание) <<, >> (сдвиг) < <= > >= (сравнения на больше или меньше) ==!= (равно, неравно) & (поразрядное И) ^ (поразрадное исключающее ИЛИ) | (поразрядное ИЛИ) && (логическое И) || (логическое ИЛИ) = (присваивание), *= /= %= += -= <<= >>= &= |= ^= (выполнить операцию и присвоить) ?: (условная операция) throw , (последовательность) Для того чтобы изменить последовательность вычисления выражений, можно воспользоваться круглыми скобками. Часть выражения, заключенная в скобки, вычисляется в первую очередь. Значением (2 + 3) * 6 будет 30. Скобки могут быть вложенными, соответственно, самые внутренние выполняются первыми: (2 + (3 * (4 + 5)) – 2) Задание Из таблицы 3 взять задание по варианту и написать программу для вычисления выражения на языке СИ.
Таблица 3
Читайте также: I. Исходя из сущности операции. Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|