Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Выполнение математических операций



Бинарная арифметика Анализ выражений

Определение порядка операций Выполнение унарных операций Использование операторов присвоения

 

придуманы математиками не только для того, чтобы было что опи- сывать и в чем сохранять  значения. Над переменными можно вы- полнять самые разные действия: складывать, перемножать, вычитать и т.д. Список

возможных операций достаточно обширен.

Эти основные математические операции используются и в программах C++. Ведь приложения без вычислительных возможностей себя совершенно не оправдывают. Кому нужна страховая программа, которая не может подсчитать даже суммы взносов?

Операции C++ внешне идентичны обыкновенным арифметическим операциям, выполняемым на клочке бумаги; разве что применяемые в вычислениях переменные перед использованием нужно объявлять:

 

int var2 = 1; varl 2 * var2;

В этом примере объявлены две переменные, var l и var2. Переменной var2 присвое- но начальное значение          var l определена как результат удвоения переменной var2.

В этой главе вы найдете описание всего множества математических операторов C++.

 

Бинарными называются операторы, которые имеют два аргумента. В выражениях типа var l op var2 оператор op бинарный. Самыми распространенными бинарными операторами являются простые математические операции, изучаемые еще за школь- ными партами. Бинарные операции, которые поддерживает C++, приведены в табл. 3.1.

Таблица  Математическиеоперациивпорядкеприоритета      

ПРИОРИТЕТ                     ОПЕРАТОР                         ЗНАЧЕНИЕ


1          +

1 - (унарный)

2          ++ (унарный)

2 — (унарный)


Реально ничего не изменяет

Возвращает противоположное по знаку, равное по модулю значение Оператор инкремента, увеличивает значение аргумента на 1 Оператор декремента, уменьшает значение аргумента на 1


Глава 3. Выполнение математических операций                                   39


ПРИОРИТЕТ                     ОПЕРАТОР                         ЗНАЧЕНИЕ


Окончаниетабл.


3 (бинарный)

3               / (бинарный)

3 (бинарный)

4               +(бинарный)

4 - (бинарный)

5

(специальные)


Умножение Деление

Остаток (деление по модулю) Сложение

Вычитание

Операторы присвоений


Как видите, операторы умножения, деления, деления по модулю, сложения и вы- читания имеют вид  обычных  математических                                                                                                             Да они и работают так же, как соответствующие им арифметические операции:

float var = 133 / 12;

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

По своей сути этот оператор означает получение остатка от деления. Например, 4 входит в 15 три раза, и остаток при этом составляет 3. Выражаясь терминами C++, 15, деленное по модулю 4, равно 3.

var  % //переменной var присваивается значение 3

Программисты всегда пытаются удивить непрограммистов, а потому в C++ деле- ние по модулю определяется так:

IntDivisor

эквивалентно

IntValue - (IntValue / IntDivisor)* IntDivisor

Вот пример:

15 % 4  равн о    15 - (15/4) * 4

15 3*4

15 - 12

3

 

Для действительных переменных оператор деления по модулю не опреде- лен, поскольку он целиком основан на использовании округления (округления рассматривались в главе 2, "Премудрости объявления пере- менных").

 

 

Самым распространенным видом инструкций в C++ является выражение. Выра- жением в C++ называют любую последовательность операторов (длиной не меньше одного), которая возвращает значение. Все выражения типизированы. Тип выражения определяется типом возвращаемого значения. Например, значение выражения 1 + 2 равняется 3, следовательно, это целочисленное выражение (тут нужно вспомнить, что константы без дробной части определяются как имеющие тип int) . Синтаксическая конструкция, включающая математический оператор, является выражением, так как в результате выполнения любой операции получается число.

 

40                                               Часть Первое знакомство с C++


Выражения бывают как сложными, так и крайне простыми. Необычной особенно- стью C++ является то, что он понимает под выражением любой законченный опера- тор. Поэтому корректным оператором является, например,

Он тоже представляет собой выражение, потому что его значение 1, а тип int .

В операторе

z = х * у +

можно выделить пять выражений:

х * у + х * у

X

У

 

Необычный аспект C++ состоит в том, что выражение само по себе является завер- шенной инструкцией, т.е. упомянутое выражение                                                                              — завершенная инструкция C++.

 

Все операторы выполняют определенные функции. Чтобы установить порядок вы- полнения различных операторов, им назначены приоритеты. Рассмотрим выражение

i n t v a r = 2 * 3 + 1 ;

Если сложение выполнить перед умножением, то значением выражения будет 2 * 4 = 8. Если сперва выполнить умножение, то получим значение б + 1 7.

Приоритеты операций определяют порядок выполнения вычислений. Из табл. 3.1 видно, что приоритет операции умножения выше, чем сложения, т.е. результат все же равен 7 {приоритеты используются и в арифметике, и C++ следует именно им).

А что происходит, когда в одном выражении используется два оператора с одина- ковым приоритетом?

in t va r

Как в этом случае следует поступить: сначала 8 поделить на 2 или 2 на 4? Если в одном выражении присутствуют операции с одинаковыми приоритетами, они выполняются слева направо (то же правило применяется и в арифметике). Поэтому в предыдущем примере сперва делим 8 на 4, получая 2, а затем делим его на 2, получая ответ — 1.

В выражении х / 100 + 32

х делится на 100 и к результату добавляется 32. Но что, если программисту нужно по- делить х на сумму 100 и 32? В таком случае ему придется использовать скобки:

х / (100 + 32)

При вычислении такого выражения х будет делиться на 132.

Заметим, что начальное выражение х  /  100       32

идентично следующему: (х /  100) +       32

Почему это действительно так? Потому что C++ сначала выполняет операции с высшим приоритетом. А приоритет операций умножения и деления выше, чем сло- жения и вычитания. Поэтому скобки, указывающие на высокий приоритет данной операции, можно опустить.

На основе сказанного можно сделать вывод: в случае необходимости приоритет оператора можно повысить, используя скобки.


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 230; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.018 с.)
Главная | Случайная страница | Обратная связь