- •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
62 Глава 2
Использование управляющих последовательностей
Ниже приведен текст программы, использующей некоторые управляющие после- довательности из предыдущей таблицы:
Если вы скомпилируете и запустите эту программу, то увидите следующий вывод:
Описание полученных результатов
Первая строка в main () определяет переменную newline и инициализирует ее символом новой строки, представленным в виде управляющей последовательности. Затем вы можете применять newline вместо endl из стандартной библиотеки.
После отправки newline на cout выводится строка, которая применяет управля- ющие последовательности для представления символов двойной (\ ") и одиночной (\ *) кавычек. Вы не обязаны использовать управляющую последовательность для оди- ночной кавычки, потому что строка ограничена двойными кавычками, и компилятор воспринимает одиночную кавычку внутри нее так, как она есть, а не в качестве разде- лителя. Однако внутри этой строки для представления двойной кавычки применять управляющую последовательность необходимо. Строка начинается с управляющей последовательности — символа новой строки, за которым идет управляющая последо- вательность символа табуляции, поэтому выходная строка сдвигается на расстояние табуляции вправо. Строка также заканчивается двумя экземплярами управляющих последовательностей, выдающих звуковой сигнал, поэтому вы можете услышать два подряд звуковых сигнала из динамика вашего компьютера.
Вычисления в С++
Здесь вы действительно начнете делать что-то с введенными данными. Теперь вы знаете, как организовать простой ввод и вывод; теперь обратимся к тому, что посре- дине — той части программы С++, которая занята обработкой данных. Все аспекты С++, связанные с вычислениями, достаточно интуитивно понятны, так что изучение этой темы пойдет у вас, как по маслу.
Данные,
переменные и вычисления
Операторы присваивания
Вы уже видели примеры присваивающих операторов. Типичный такой оператор выглядит следующим образом:
Оператор присваивания позволяет вычислить значение выражения, стоящего справа от знака равенства — в данном случае сумму parti, part2 и part3 — и сохра- нить результат в переменной, указанной слева от знака равенства — в данном случае, переменной whole. В показанном операторе whole — просто сумма частей, и ничего более.
Обратите внимание, что оператор, как всегда, завершается точкой с запятой. Вы можете также писать повторяющиеся присваивания, как здесь:
Это эквивалентно присваиванию значения 2 переменной b с последующим при- сваиванием значения b переменной а. В результате обе переменных получают значе- ние 2.
Понятия lvalue и rvalue
lvalue (left value — левое значение) — это нечто такое, что ссылается на адрес памя- ти и называется так потому, что любое выражение, дающее в результате lvalue, может быть поставлено слева от знака равенства в операторе присваивания. Большинство переменных являются lvalue, потому что они специфицируют место в памяти. Однако, как вы вскоре убедитесь, существуют переменные, которые не являются lval- ue, и не могут появляться слева в операторах присваивания, потому что их значения определены как константные.
Переменные а и Ь, которые вы видели в предыдущем разделе, являются lvalue, в то время как результат вычисления выражения а+b не может быть таковым, посколь- ку для этого результата не определено место в памяти, где он должен быть сохранен. Результат выражения, не являющегося lvalue, называют rvalue (right value — правое значение).
Термин lvalue еще не раз появится в этой книге— иногда там, где вы менее всего будете его ожидать, поэтому запомните его определение.
Арифметические операции
Базовые арифметические операции, которые предоставлены в ваше распоряже- ние — сложение, вычитание, умножение и деление — обозначаются символами +, -, * и / соответственно. В основном они работают так, как и можно было ожидать, за ис- ключением деления, в поведении которого, как вы увидите, существуют некоторые отклонения, когда оно применяется к целым или константам. Вы можете писать опе- раторы вроде следующего:
Здесь будет вычислено произведение hours и rate, затем из полученного ре- зультата вычтено deductions. Операции умножения и деления выполняются перед операциями сложения и вычитания, чего и следовало ожидать. Позднее в этой гла-