
Лекция№3. Классификация операций.
Содержание лекции
Определение операции.
Унарные операции.
Мультипликативные операции.
Аддитивные операции
Операции сдвига
Операции отношения.
Операции присваивания.
Вопросы для самопроверки.
Определение операции.
Любое выражение языка состоит из операндов (переменных, констант и др.), соединенных знаками операций. Знак операции - это символ или группа символов, которые сообщают компилятору о необходимости выполнения определенных арифметических, логических или других действий.
2. Унарные операции
Выражение с унарными операциями группируется справа налево.
унарное_выражение:
* выражение
& l_значение
- выражение
! выражение
~ выражение
++ l_значение
-- l_значение
l_значение ++
l_значение --
(имя-типа) выражение
sizeof выражение
sizeof (имя_типа)
Унарная операция * означает косвенную адресацию: выражение должно быть указателем, а результатом является l_значение,ссылающееся на тот объект, на который указывает выраже-ние. Если типом выражения является указатель на ..., то типом результата будет "...".
Результатом унарной операции & является указатель на объект, к которому ссылается l_значение. Если l_значение имеет тип "...", то типом результата будет указатель на ....
Результатом унарной операции - (минус) является ее операнд, взятый с противоположным знаком. Для величины типа unsigned результат получается вычитанием ее значения из 2**n (два в степени n), где n-число битов в int. Унарной операции + (плюс) не существует.
Результатом операции логического отрицания ! является 1, если значение ее операнда равно 0, и 0, если значение ее операнда отлично от нуля. Результат имеет тип int. Эта операция применима к любому арифметическому типу или указателям.
Операция ~ (символ "тильда", находится на клавише ^ в нижнем регистре) дает обратный код (или дополнение до единицы) своего операнда. Выполняются обычные арифметическиепреобразования. Операнд должен быть целочисленного типа.
Объект, на который ссылается операнд l_значения префиксной операции ++, увеличивается. Значением является новое значение операнда, но это не l_значение. Выражение ++х эквивалентно х += 1 .
Префиксная операция -- аналогична префиксной операции++, но приводит к уменьшению своего операнда l_значения.
При применении постфиксной операции ++ к l_значению результатом является значение объекта, на который ссылается l_значение. После того, как результат принят к сведению,объект увеличивается точно таким же образом, как и в случае префиксной операции ++. Результат имеет тот же тип, что и выражение l_значения.
При применении постфиксной операции -- к l_значению результатом является значение объекта, на который ссылается l_значение. После того, как результат принят к сведению,
объект уменьшается точно таким же образом, как и в случае префиксной операции --. Результат имеет тот же тип, что и выражение l_значения.
Заключенное в круглые скобки имя типа данных, стоящее перед выражением, вызывает преобразование значения этого выражения к указанному типу. Эта конструкция называется перевод (cast). Имена типов описываются в следующем разделе.
3. Мультипликативные операции
Мультипликативные операции *, /, и % группируются слева направо.
Выполняются обычные арифметические преобразования.
мультипликативное_выражение:
выражение * выражение
выражение / выражение
выражение % выражение
Бинарная операция * означает умножение. Операция * ассоциативна, и выражения с несколькими умножениями на одном и том же уровне могут быть перегруппированы компилятором.
Бинарная операция / означает деление. При делении положительных целых осуществля-ется усечение по направлению к нулю, но если один из операндов отрицателен, то форма усечения зависит от используемой машины. Остаток имеет тот же знак, что и делимое. Всегда справедливо, что (a/b)*b+a%b равно a (если b не равно 0).
Бинарная операция % выдает остаток от деления первого выражения на второе. Выполняются обычные арифметические пре образования. Операнды должны быть целого типа.