Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
A.doc
Скачиваний:
36
Добавлен:
09.04.2015
Размер:
5.6 Mб
Скачать

68 Глава 2

Обратите внимание на то, как вычисляется периметр комнаты в следующем опе- раторе. Чтобы умножить сумму length и width на два, выражение сложения заклю- чается в скобки. Это гарантирует, что сложение будет выполнено первым, а результат будет умножен на 2.0, чтобы получить правильное значение периметра. С помощью скобок вы можете гарантировать, что вычисление будет выполнено именно в том по- рядке, в каком нужно, потому что выражения в скобках всегда выполняются первыми. Если есть несколько вложенных друг в друга выражений со скобками, то эти выраже- ния вычисляются последовательно — от внутренних скобок к внешним.

Третий оператор, вычисляющий количество полос обоев, необходимых для оклей- ки комнаты, использует тот же эффект, что вы видели в первом операторе. Результат округляется в меньшую сторону до ближайшего целого, поскольку он должен быть присвоен целочисленной переменной. Но это не то, что вам нужно на

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

Последнее арифметическое выражение вычисляет количество необходимых руло- нов, разделив количество полос (как целое) на количество полос в рулоне (тоже как целое). Поскольку вы делите одно целое на другое целое, результат также будет це- лым числом, и любой остаток игнорируется. То же самое случится, даже если nrolls будет переменной с плавающей точкой. Целое значение, полученное от выражения деления, будет преобразовано в значение с плавающей точкой и сохранено в nrolls. Полученный результат, по сути, будет тем же, как если бы вы получили значение с плавающей точкой и округлили его в сторону ближайшего меньшего целого. Опять- таки, это не то, что вам нужно, поэтому если вы хотите использовать эту программу, ее придется откорректировать.

Отображение результата

Результат вычисления отображается с помощью следующего оператора:

Это один оператор вывода, разнесенный на три строки кода. Сначала оно вы- водит символ новой строки, затем текстовую строку "Для оклейки вашей комнаты понадобится ". После этого следует значение переменной nrolls, за которым — еще одна текстовая строка " рулонов обоев. ". Как видите, операторы вывода на С++ пи- сать очень легко.

Программа завершается следующим оператором:

Здесь 0 — это возвращаемое значение, которое в данном случае передается опера- ционной системе. Подробнее о возвращаемых значениях вы узнаете в главе 5.

Вычисление остатка

Вы видели в последнем примере, что деление одного целого значения на другое дает целое с игнорирированием остатка, поэтому если 11 разделить на 4, то в резуль- тате получится 2. Поскольку остаток от деления может представлять значительный интерес, например, когда вы делите печенье между детьми, С++ предусматривает для этого специальную операцию — %. То есть, проблему деления печений можно решить, написав следующие операторы:

Данные, переменные и вычисления 69

Переменная residue получит значение 4 — число, оставшееся после деления 19 на 5. Чтобы вычислить, сколько печенья получит каждый ребенок, вы просто используете деление:

Модификация переменной

Часто возникает необходимость модифицировать существующее значение пере- менной, например, увеличивая или удваивая его. Увеличит значение переменной по имени count можно с помощью следующего оператора:

Здесь просто к текущему значению count прибавляется 5 и полученный результат помещается обратно в count, поэтому, если сначала count было равно 10, то после этого оно будет равно 15.

В С++ предусмотрен альтернативный сокращенный синтаксис для записи того же выражения:

Это значит "взять значение count, добавить к нему 5 и сохранить полученный ре- зультат в count". Можно также использовать и другие операторы в подобной нота-

ции. Например:

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

где ор любая из следующих операций:

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

Общая форма этого оператора эквивалентна следующей:

Скобки вокруг rhs указывают на то, что это выражение вычисляется первым, а за- тем результат становится правым операндом операции ор. Это значит, что вы можете писать такие операторы, как:

и это даст тот же результат, что и:

Таким образом, значение а будет разделено на сумму b и с, а результат присвоен а.