Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР3-С++-13 марта-2012.doc
Скачиваний:
14
Добавлен:
15.09.2019
Размер:
1.26 Mб
Скачать

1.2. Арифметические операции

1.2.1. Знаки операций

Знаки операций обеспечивают формирование и последующее вы­числение выражений. Выражение есть правило для получения значе­ния. Один и тот же знак операции может употребляться в различных выражениях и по-разному интерпретироваться в зависимости от кон­текста. Для изображения операций в большинстве случаев использу­ется несколько символов. В ANSI-стандарте языка Си определены следующие знаки операций:

[]

()

.

->

++

--

&

*

+

-

~

!

sizeof

/

%

<<

>>

<

>

<=

>=

=

! =

^

|

&&.

||

? :

=

* =

/=

%=

+=

-=

<<=

>>=

&=

^=

|=

,

#

it

Дополнительно к перечисленным в С++ введены:

::

.*

->*

new

delete

typeid

За исключением операций [], () и ?: все знаки операций рас­познаются компилятором как отдельные лексемы. В зависимости от контекста одна и та же лексема может обозначать разные операции. Например, бинарная операция & – это поразрядная конъюнкция, а унарная операция & – это операция получения адреса.

Одним из принципиальных отличий языка С++ от предше­ствующего ему языка Си является возможность расширения действия, иначе перегрузки (overload) стандартных операций, т.е. распростране­ния их действия на нестандартные для них операнды. Материал, отно­сящийся к расширению действия (перегрузке) операций, будет рассматриваться в следующих лабораторных работах. Сейчас опишем кратко стан­дартные возможности отдельных операций.

1.2.2. Операции

Операции осуществляют пересылку и преобразование данных в программах. Обозначаются операции одним или несколькими символами, например +, -, >> и т.д. Данные, участвующие в операции, называются операндами. В качестве операндов могут использоваться переменные, константы, выражения.

Над числовыми данными определены следующие группы операций (рис. 3.10).

Операции над числовыми данными в С++

1

2

3

4

5

6

Арифмети­ческие

операции

Операция

присва­ивания

Операции отношения

Логичес­кие операции

Операция запятая (,)

Операция приведения к типу

Рис. 3.10. Операции над числовыми данными

В соответствии с количеством операндов, которые используются в операциях они делятся на унарные (один операнд), бинарные (два операнда) и тернарную (три операнда).

Унарные операции (один операнд) выполняются справа налево. Некоторые унарные операции приведены в табл. 3.1.

Таблица 3.1

Унарные операции

Знак

операции

Операция

Описание

-

Унарный минус

~

Побитовое логическое отрицание

!

Логическое отрицание

В качестве логических значений используется 0 (false) - ложь и не 0 (true) - истина, отрицанием 0 будет 1, отрицанием любого ненулевого числа будет 0.

+

Унарный плюс

++

Увеличение

(инкремент)

на единицу

префиксная операция - увеличивает операнд до его использования,

постфиксная операция увеличивает операнд после его использования.

--

Уменьшение

(декремент)

на единицу

префиксная операция - уменьшает операнд до его использования,

постфиксная операция уменьшает операнд после его использования.

sizeof

вычисление размера (в байтах) для объекта того типа, который имеет операнд

&

Получение адреса операнда

*

Получение значения, находящегося по указанному адресу (разыменование)

new

Выделение памяти

Динамическое распределение памяти.

delete

Освобождение памяти

Динамическое распределение памяти.

(type)

Преобразование типа

В отличие от унарных, бинарные операции (два операнда), список которых приведен в табл. 3.2, выполняются слева направо.

Таблица 3.2

Бинарные операции

Знак

операции

Операция

Группа операций

Описание

*

Умножение

Арифметические

мультипликативные

умножение операндов арифметического типа

/

Деление

деление операндов арифметического типа (если операнды целочисленные, то выполняется целочисленное деление)

%

Остаток от деления

получение остатка от деления целочисленных операндов

+

Сложение

Арифметические

аддитивные

бинарный плюс (сложение арифметических операндов)

-

Вычитание

бинарный минус (вычитание арифметических операндов)

<<

Сдвиг влево

Операции сдвига

>>

Сдвиг вправо

<

Меньше

Операции отношения

меньше, чем

>

Больше

больше

<=

Меньше или равно

меньше или равно

>=

Больше или равно

больше или равно

= =

Равно

Равно???

!=

Не равно

не равно

&

Битовая операция И

Битовые (поразрядные) операции

|

Поразрядное ИЛИ

^

Поразрядное исключающее ИЛИ

&&

Логическое И

Логические операции

конъюнкция (И) целочисленных операндов или отношений, целочисленный результат ложь(0) или истина( не 0)

||

Логическое ИЛИ

дизъюнкция (ИЛИ) целочисленных операндов или отношений, целочисленный результат ложь(0) или истина(не 0)

,

Последовательное вычисление

Последовательного вычисления

=

Присваивание

Операции присваивания

присваивание

*=

Умножение с присваиванием

умножение с присваиванием (мультипликативное присваивание)

/=

Деление с присваиванием

деление с присваиванием

%=

Остаток от деления с присваиванием

деление с остатком с присваиванием

-=

Вычитание с присваиванием

вычитание с присваиванием

+=

Сложение с присваиванием

сложение с присваиванием

<<=

Сдвиг влево с присваиванием

>>=

Сдвиг вправо присваиванием

&=

Поразрядное И с присваиванием

|=

Поразрядное ИЛИ с присваиванием

^=

Поразрядное исключающее ИЛИ с присваиванием

Тернарной операцией (три операнда) является операция «условие ?», которая реализует алгоритмическую структуру ветвления (не рассматривается в рамках лабораторного практикума).

Таблица 3.3

Тернарная операция

Знак

операции

Операция

Описание

?:

Условная операция;

в ней

используется три

операнда.

Выражение1 ? Выражение2 : Выражение3;

Первым вычисляется значение выражения1. Если оно истинно, то вычисляется значение выражения2, которое становится результатом. Если при вычислении выражения1 получится 0, то в качестве результата берется значение выражения3.

Например:

x<0 ? -x : x ; //вычисляется абсолютное значение x.