- •6 Глава 1
- •12 Глава 1
- •14 Глава 1
- •16 Глава 1
- •18 Глава 1
- •20 Глава 1
- •22 Глава 1
- •24 Глава 1
- •26 Глава 1
- •31 Глава 1
- •34 Глава 2
- •36 Глава 2
- •Puc. 2.4. Дополнительные опции консольного приложения Win32
- •38 Глава 2
- •40 Глава 2
- •42 Глава 2
- •44 Глава 2
- •48 Глава 2
- •50 Глава 2
- •52 Глава 2
- •54 Глава 2
- •56 Глава 2
- •58 Глава 2
- •60 Глава 2
- •62 Глава 2
- •64 Глава 2
- •66 Глава 2
- •68 Глава 2
- •70 Глава 2
- •74 Глава 2
- •76 Глава 2
- •79 Глава 2
- •82 Глава 2
- •84 Глава 2
- •86 Глава 2
- •88 Глава 2
- •92 Глава 2
- •94 Глава 2
- •96 Глава 2
- •98 Глава 2
- •103 Глава 2
- •105 Глава 2
- •107 Глава 2
- •110 Глава 2
- •115 Глава 3
- •119 Глава 3
- •121 Глава 3
- •123 Глава 3
- •125 Глава 3
- •129 Глава 3
- •131 Глава 3
- •133 Глава 3
- •139 Глава 3
- •141 Глава 3
- •143 Глава 3
- •145 Глава 3
- •148 Глава 3
- •150 Глава 3
- •155 Глава 3
- •165 Глава 4
- •168 Глава 4
- •170 Глава 4
- •173 Глава 4
- •175 Глава 4
- •178 Глава 4
- •184 Глава 4
- •186 Глава 4
- •188 Глава 4
- •190 Глава 4
- •192 Глава 4
- •194 Глава 4
- •198 Глава 4
- •201 Глава 5
- •203 Глава 5
- •205 Глава 5
- •207 Глава 5
- •213 Глава 5
- •217 Глава 5
- •219 Глава 5
- •221 Глава 5
- •223 Глава 5
- •225 Глава 5
- •227 Глава 5
- •232 Глава 5
- •234 Глава 5
- •236 Глава 5
68 Глава 2
Обратите внимание на то, как вычисляется периметр комнаты в следующем опе- раторе. Чтобы умножить сумму length и width на два, выражение сложения заклю- чается в скобки. Это гарантирует, что сложение будет выполнено первым, а результат будет умножен на 2.0, чтобы получить правильное значение периметра. С помощью скобок вы можете гарантировать, что вычисление будет выполнено именно в том по- рядке, в каком нужно, потому что выражения в скобках всегда выполняются первыми. Если есть несколько вложенных друг в друга выражений со скобками, то эти выраже- ния вычисляются последовательно — от внутренних скобок к внешним.
Третий оператор, вычисляющий количество полос обоев, необходимых для оклей- ки комнаты, использует тот же эффект, что вы видели в первом операторе. Результат округляется в меньшую сторону до ближайшего целого, поскольку он должен быть присвоен целочисленной переменной. Но это не то, что вам нужно на
самом деле. Было бы лучше округлить в сторону большего, но пока у вас нет достаточ- ных знаний о С++, чтобы сделать это. Прочитав следующую главу, вы сможете вер- нуться и внести соответствующие исправления.
Последнее арифметическое выражение вычисляет количество необходимых руло- нов, разделив количество полос (как целое) на количество полос в рулоне (тоже как целое). Поскольку вы делите одно целое на другое целое, результат также будет це- лым числом, и любой остаток игнорируется. То же самое случится, даже если nrolls будет переменной с плавающей точкой. Целое значение, полученное от выражения деления, будет преобразовано в значение с плавающей точкой и сохранено в nrolls. Полученный результат, по сути, будет тем же, как если бы вы получили значение с плавающей точкой и округлили его в сторону ближайшего меньшего целого. Опять- таки, это не то, что вам нужно, поэтому если вы хотите использовать эту программу, ее придется откорректировать.
Отображение результата
Результат вычисления отображается с помощью следующего оператора:
Это один оператор вывода, разнесенный на три строки кода. Сначала оно вы- водит символ новой строки, затем текстовую строку "Для оклейки вашей комнаты понадобится ". После этого следует значение переменной nrolls, за которым — еще одна текстовая строка " рулонов обоев. ". Как видите, операторы вывода на С++ пи- сать очень легко.
Программа завершается следующим оператором:
Здесь 0 — это возвращаемое значение, которое в данном случае передается опера- ционной системе. Подробнее о возвращаемых значениях вы узнаете в главе 5.
Вычисление остатка
Вы видели в последнем примере, что деление одного целого значения на другое дает целое с игнорирированием остатка, поэтому если 11 разделить на 4, то в резуль- тате получится 2. Поскольку остаток от деления может представлять значительный интерес, например, когда вы делите печенье между детьми, С++ предусматривает для этого специальную операцию — %. То есть, проблему деления печений можно решить, написав следующие операторы:
Данные,
переменные
и
вычисления
Переменная residue получит значение 4 — число, оставшееся после деления 19 на 5. Чтобы вычислить, сколько печенья получит каждый ребенок, вы просто используете деление:
Модификация переменной
Часто возникает необходимость модифицировать существующее значение пере- менной, например, увеличивая или удваивая его. Увеличит значение переменной по имени count можно с помощью следующего оператора:
Здесь просто к текущему значению count прибавляется 5 и полученный результат помещается обратно в count, поэтому, если сначала count было равно 10, то после этого оно будет равно 15.
В С++ предусмотрен альтернативный сокращенный синтаксис для записи того же выражения:
Это значит "взять значение count, добавить к нему 5 и сохранить полученный ре- зультат в count". Можно также использовать и другие операторы в подобной нота-
ции. Например:
дает эффект, выражающийся в умножении текущего значения count на 5 и сохране- нии результата в count. В общем случае, вы можете писать операторы в форме:
где ор — любая из следующих операций:
Вы уже встречались с первыми пятью из этих операций, а с остальными (опера- циями сдвига и логическими) вы ознакомитесь далее в этой главе. Ihs представляет любое корректное выражение, которое можно поместить в левой части присваива- ния, и обычно (но не обязательно) это имя переменной, rhs — это любое корректное выражение, которое можно поместить в правой части оператора.
Общая форма этого оператора эквивалентна следующей:
Скобки вокруг rhs указывают на то, что это выражение вычисляется первым, а за- тем результат становится правым операндом операции ор. Это значит, что вы можете писать такие операторы, как:
и это даст тот же результат, что и:
Таким образом, значение а будет разделено на сумму b и с, а результат присвоен а.