birmaga.ru
добавить свой файл

1
Операции

Операции подобны встроенным функциям языка. Они применяются к выражениям — операндам. Большинство операций имеют два операнда, один из которых помещается перед знаком операции, а другой - после. Например, операция сложения +имеет два операнда: X +Y и складывает их. Такие операции называются бинарными. Существуют и унарные операции, имеющие только один операнд, помещаемый после знака операции. Например, запись -Х означает применение к операнду X операции унарного минуса -. В сложных выражениях последовательность выполнения операций определяется скобками, старшинством операций.

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



Арифметические операции применяются к действительным числам, целым числам и указателям. Определены следующие бинарные арифметические операции:

Обозначение

Операция

Типы операндов и результата

Пример

+

Сложение

Арифметический, указатель

X+Y

-

вычитание

Арифметический, указатель

X-Y

*

умножение

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

X*Y

/

Деление

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

X/Y

%

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

целый

1%6



Определены следующие унарные арифметические операции:

Обозначение

Операция

Типы операндов и результата

Пример

+

Унарный плюс (подтверждение знака)

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

+7

-

Унарный минус (изменение знака)

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

-Y

++

Инкремент

Арифметический, указатель

I++; ++I

--

декремент

Арифметический, указатель

I--; --I


Для арифметических операций действуют следующие правила. Бинарные операции сложения "+"и вычитания "-"применимы к целым и действительным числам, а также к указателям.

В операции сложения указателем может быть только один из двух операндов. В этом случае второй операнд должен быть целым числом. Указатель, участвующий в операции сложения, должен быть указателем на элемент массива. В этом случае добавление к указателю целого числа эквивалентно сдвигу указателя на заданное число элементов массива.

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


В операциях умножения "*"и деления "/"операнды могут быть любых арифметических типов. При разных типах операндов применяются стандартные правила автоматического приведения типов.

В операции вычисления остатка от деления "%"оба операнда должны быть целыми числами.

В операциях деления и вычисления остатка второй операнд не может быть равен нулю. Если оба операнда в этих операциях целые, а результат деления является не целым числом, то знак результата вычисления остатка совпадает со знаком первого операнда.

Унарные операции инкремента "++"и декремента "--"сводятся к увеличению "++"или уменьшению "--"операнда на единицу. Операции применимы к операндам, представляющим собой выражения любых арифметических типов или типа указателя. Причем выражение должно быть модифицируемым, т.е. должно допускать изменение. Например, ошибочным является выражение ++(а +b), поскольку (а +Ь) не является переменной, которую можно модифицировать. Операции инкремента и декремента выполняются быстрее, чем обычное сложение и вычитание. Поэтому, если переменная а должна быть увеличена на 1,лучше применить операцию "++",чем выражения а =а +1.

Если операция инкремента или декремента помещена перед переменной, говорят о префиксной форме записи инкремента или декремента. Если операция инкремента или декремента записана после переменной, то говорят о постфиксной форме записи. При префиксной форме переменная сначала увеличивается или уменьшается на единицу, а затем это ее новое значение используется в том выражении, в котором она встретилась. При постфиксной форме в выражении используется текущее значение переменной, и только после этого ее значение увеличивается или уменьшается на единицу.

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



В C++определен ряд операций присваивания.

Обозначение


Операция

Типы операндов

Пример

=

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

Любые

X=Y

+=

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

Арифметические, указатели, структуры, объединения

X+=Y

-=

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

Арифметические, указатели, структуры, объединения

X-=Y

*=

Присваивание с умножением

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

X*=Y

/=

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

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

X/=Y

%=

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

целые

X%=Y


Помимо простой операции присваивания "=" все прочие являются составными операциями. Они присваивают первому операнду результат применения соответствующей простой операции, указанной перед символом "=", к первому и второму операндам.

Например, выражение X +=Y эквивалентно выражению X =X +Y, но записывается компактнее и может выполняться быстрее. Аналогично определяются и другие операции присваивания: X %=Y эквивалентно X =X %Y и т.д.

При записи составных операций присваивания между символом операции и знаком равенства пробел не допускается.

В операциях присваивания первый операнд не может быть нулевым указателям.


Операции присваивания возвращают как результат присвоенное значение. Благодаря этому они допускают сцепление. Например, вы можете написать:

А =(В =С =1)+1;

Выполняются операции присваивания справа налево. Поэтому приведенное выражение задаст переменным В и С значения 1,а переменной А — 2.Вычисляться это будет следующим образом. Сначала выполняются операции, заключенные в скобки, а из них первой — самая правая (т.е. С =1).Эта операция вернет 1,так что далее будет выполнена операция В =1.Она вернет значение 1,после чего выполнится операция сложения 1 +1.Полученное в результате значение 2 присвоится переменной А.
Операции отношения и эквивалентности
Операции отношения и эквивалентности используются при сравнении двух операндов. Они возвращают true (1) — истина, если указанное соотношение операндов выполняется, и false (0)— ложь, если соотношение не выполняется. Определены следующие операции отношения:


Обозначение

Операция

Типы операндов

Пример

==

равно

Арифметический, указатели

X==Y

!=

Не равно

Арифметические, указатели

X!=Y

<

Меньше чем

Арифметические, указатели

X

>

Больше чем

Арифметические, указатели

X>Y


<=

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

Арифметические, указатели

X<=Y

>=

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

Арифметические, указатели

X>=Y


Операнды должны иметь совместимые типы,за исключением целых и дейст-

вительных типов,которые могут сравниваться друг с другом.

Применять операции "<","<=",">",">="к указателям имеет смысл,только

если оба операнда указывают на элементы одного массива.

Операции "=="и "!="могут применяться к указателям на любые объекты. В этом случае они вернут соответственно true или false, только если указатели указывают на один и тот же объект.

Следует предостеречь от довольно распространенной ошибки: случайного применения вместо операции эквивалентности "=="операции присваивания "=".

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



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


Обозначение

Операция

Пример

!

Отрицание

!A

&&

Логическое И

A&&B

||

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

A||B

Унарная операция логического отрицания "!" возвращает true, если операнд возвращает ненулевое значение. Таким образом, выражение !А эквивалентно выражению А ==0.


Операция логического И "&&"возвращает true, если оба ее операнда возвращают ненулевые значения. Если хотя бы один операнд возвращает 0 (false), то операция И также возвращает false. Поэтому для сокращения времени расчета, если первый операнд возвращает нуль, то второй операнд даже не вычисляется.

Операция логического ИЛИ "||"возвращает true, если хотя бы один ее операнд возвращает ненулевое значение. Если оба операнда возвращают 0 (false), то операция ИЛИ также возвращает false. Для сокращения времени расчета, если первый операнд возвращает ненулевое значение, то второй операнд даже не вычисляется.
Условная операция (?:)
Условная операция "?:"-единственная трехчленная (тернарная)операция в C++, имеющая три операнда. Ее синтаксис:

условие ?выражение 1 :выражение 2

Первый операнд является условием, второй операнд содержит значение условного выражения в случае, если условие истинно (возвращает ненулевое значение), а третий операнд равен значению условного выражения, если условие ложно (возвращает нуль).Например, оператор
max=(a>b)?a:b;
в зависимости от значения переменных a и b величина max примет наибольшее значение.

В условной операции условие может быть любым скалярным выражением. Условные выражения могут быть практически любого типа (арифметические, указатели, структуры, объединения).
Операции поместить в поток («)и взять из потока (»)
Операции поместить в поток "«" и взять из потока "»" предназначены для работы с потоками со стандартными потоками cout и cin, используемыми в основном в консольных приложениях. Операция поместить в поток используется совместно с потоком cout. Такое использование приведет в выводу информации на экран.

Например:

cout << “Hello world”;

Данная часть программного кода приведет к выводу сообщения Hello world.

Операция взять из потока используется совместно с потоком cin. Такое использование приведет в вводу данных с клавиатуры.

Например:

cin >> k;

Данная часть программного кода приведет к тому, что если пользователь введет значение 5, то значение переменой k примет значение равное 5.