- •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
64 Глава 2
ве я расскажу подробнее о порядке выполнения различных операций в выражениях. Общий результат вычисления выражения hours * rate — deductions помещается в переменную netPay.
Знак минус, использованный в последнем операторе, работает с двумя операнда- ми — он вычитает значение правого операнда из значения левого операнда. Он на- зывается бинарной операцией, потому что тут вовлечены два значения. Знак минус также может быть использован с одним операндом — при этом он меняет его знак на противоположный. В этом случае его называют унарной операцией. Вы можете напи- сать следующий код:
Здесь а будет присвоено значение +5, поскольку унарный минус изменил знак опе- ранда b.
Обратите внимание, что присваивание не эквивалентно равенству, как принято в алгебре. Оно специфицирует действие, которое должно быть выполнено, а не кон- статацию факта. Выражение справа от оператора присваивания вычисляется, и ре- зультат сохраняется в lvalue — обычно переменной, которая стоит слева.
Взгляните на приведенный ниже оператор:
Вы
можете поупражняться в арифметике на
С++, вычисляя, сколько стандартных
рулонов
обоев понадобится, чтобы обклеить
комнату. Следующий пример делает это.
Данные,
переменные
и
вычисления
Если только вы не более тренированы в печати на клавиатуре, чем я, то весьма вероятно, что при первой попытке компиляции будут обнаружены некоторые опечат- ки. Когда вы исправите их, программа должна компилироваться и работать успешно. Возможно, вы получите пару предупреждающих сообщений от компилятора. Не бес- покойтесь о них — компилятор просто дает вам возможность убедиться в том, что вы понимаете то, что делаете. Причины сообщений об ошибках я объясню чуть позже.
Описание полученных результатов
Одну вещь хочу подчеркнуть с самого начала — я не несу ответственности за ваш расход обоев, если при расчете вы воспользуетесь этой программой! Как вы увидите, ошибки в расчете необходимого количества рулонов, которое выдаст эта программы, происходят по причине того, как работает С++, и недостаток рулонов для оклейки реальной комнаты может достичь более 50%!
Я разберу по косточкам все операторы этого примера, отмечая интересные, ори- гинальные и даже захватывающие моменты. Операторы, следующие за началом тела функции main (), для вас уже знакомая территория, и я буду исходить из этого.
Стоит отметить пару важных моментов, связанных с композицией программы. Во- первых, операторы в теле main () выровнены так, чтобы их легче было прочесть, и, во-вторых, различные группы операторов разделены пустыми строками, чтобы выде- лить функциональные группы. Смещение вправо (indenting) операторов — это фунда- ментальная техника организации программного кода С++. Вы увидите, что это приме- няется повсеместно для обеспечения визуального выделения различных логических блоков программы.
Модификатор const
В самом начале тела main () находится блок объявлений переменных, используе- мых программой. Эти операторы также уже вам знакомы, но среди них есть два, ко- торые включают в себя нечто новое:
Оба они начинаются с нового ключевого слова — const. Это модификатор типа, указывающий, что переменная не только имеет тип double, но также является кон- стантной. Поскольку вы однозначно сообщаете компилятору, что эти две перемен- ные — константы, он может проверить любой оператор, который попытается из- менить значения этих переменных, и если обнаружит такое, выдаст сообщение об ошибке. Переменная, объявленная как const, не является lvalue, а потому не может помещаться в левой части оператора присваивания.
Вы можете убедиться в этом, добавив в текст программы где-нибудь после объявле- ния rollwidth оператор вроде такого:
rollWidth = 0;