- •Введение
- •1. Этапы и проблемы решения задач с использованием компьютера
- •Алфавит языка
- •Ключевые слова
- •Идентификаторы
- •Знаки операций
- •Константы
- •Комментарии
- •2.3. Структура и основные элементы программы
- •2.4. Трансляция программ и их выполнение
- •3. Стандартные (базовые) типы данных, операции и выражения
- •3.1. Типы данных, переменные и константы Понятие типов данных
- •Классификация простых предопределенных типов данных
- •Переменные, константы
- •3.2. Целочисленные типы данных
- •3.3. Вещественные типы данных
- •3.4. Логический тип данных
- •3.5. Символьный тип данных
- •3.6. Операции и выражения
- •Преобразования типов данных
- •Операция присваивания
- •Арифметические операции
- •Операции отношения
- •Логические операции
- •Поразрядные (битовые) операции
- •Операции составного присваивания
- •Условная операция
- •Операция sizeof
- •Приоритеты рассмотренных операций
- •3.7. Ввод и вывод простых типов данных
- •Вывод текстовых строк
- •Ввод/вывод арифметических типов данных
- •Форматирование ввода / вывода
- •4.1. Идеи структурного программирования
- •Условная инструкция (if)
- •Инструкция множественного выбора (switch)
- •Цикл с предусловием (while)
- •Цикл с постусловием (do while)
- •Итерационный цикл (for)
- •Инструкции перехода
- •5. Приемы программирования циклов
- •5.1. Рекуррентные вычисления
- •5.2. Инвариант цикла
- •6. Массивы
- •6.1. Понятие массива
- •6.2. Объявление массивов Объявление одномерных массивов
- •Объявление многомерных массивов
- •6.3. Ввод-вывод массивов
- •Вывод массивов
- •Ввод массивов
- •6.4. Текстовые строки как массивы символов
- •Определение текстовой строки
- •Ввод текстовых строк с клавиатуры
- •Обработка текстовых строк
- •Массивы текстовых строк
- •7. Разработка программ при работе с массивами
Операции составного присваивания
Операции этой группы перечислены в следующей таблице:
Операция |
Использование |
Эквивалент |
*= |
a *= b |
a = a * b |
/= |
a /= b |
a = a / b |
%= |
a %= b |
a = a % b |
+= |
a += b |
a = a + b |
-= |
a -= b |
a = a - b |
<<= |
a <<= b |
a = a << b |
>>= |
a >>= b |
a = a >> b |
&= |
a &= b |
a = a & b |
|= |
a |= b |
a = a | b |
^= |
a ^= b |
a = a ^ b |
Общий формат записи выражений с использованием этих операций:
< Переменная > < Операция >= < Выражение >
Эквивалентом этого формата в общем случае является:
< Переменная > = < Переменная > < Операция > < Выражение >
Таким образом, выражение с использованием составного присваивания (столбец "Использование") является укороченной формой записи соответствующего эквивалентного выражения (столбец "Эквивалент").
Условная операция
Единственная в C++ тернарная операция. Формат записи:
< Условие > ? < Выражение 1 > : < Выражение 2 >
| | |
Операнд 1 Операнд 2 Операнд 3
"Условие" - любое выражение, результатом которого является число или логическое значение. Значение "Условия" трактуется как логическое значение (0-false; любое не равное0значение -true). Если значение первого операндаtrue(не равное0), то значение этого условного выражения будет равно значению второго операнда (Выражение 1). Если же значение первого операндаfalse(0), то значение этого условного выражения будет равно значению третьего операнда (Выражение 2).
Например:
// Переменной maxприсваивается наибольшее изaиbзначение
int max = a > b ? a : b;
Условные выражения можно вкладывать друг в друга. Например:
// Переменной maxприсваивается наибольшее изa,bиcзначение
int max = a > b ? (a > c ? a : c) : (b > c ? b : c);
Часто условное выражение используется для вывода на экран одного из значений, в зависимости от некоторого условия. Например:
cout << (a > b ? a : b) << endl; // Выводится наибольшее изaиb
Операция sizeof
Операция sizeofпредназначена для определения объема памяти в байтах, требующегося для размещения некоторого объекта или типа данных. Имеет две формы:
sizeof < Выражение >
или
sizeof (< Тип данных >)
Например:
long a = 0;
double d;
cout << sizeof (double) << endl; // Выведено 8
cout << sizeof (5 / 3) << endl; // Выведено 4
cout << sizeof a << endl; // Выведено 4
cout << sizeof (a + 3.14f) << endl; // Выведено 4
cout << sizeof (d = a + 3.14f) << endl; // Выведено 8
Приоритеты рассмотренных операций
Результат вычисления выражений зависит от приоритета операций и от порядка выполнения операций с одинаковым приоритетом.
Для правильной записи выражений очень важно знать, в каком порядке выполняются операции внутри выражения. Например:
5 + 4 * 3 / 2 + 3
Если выполнить операции слева направо, то результат будет равен 16:
5 + 4 = 9
9 * 3 = 27
27 / 2 = 13
13 + 3 = 16
Но, поскольку, операции умножения и деления имеют одинаковый приоритет, и он выше, чем у операции сложения, на самом деле результат будет равен 14:
4 * 3 = 12
12 / 6 = 6
5 + 6 = 11
11 + 3 = 14
В арифметических и логических выражениях операции с одинаковым приоритетом выполняются слева направо. А вот выражения с операторами присваивания выполняются справа налево.
В следующей таблице приведен перечень рассмотренных выше операций в порядке уменьшения приоритетов. Операции, имеющий одинаковый приоритет, сгруппированы по секциям.
Операция |
Действие |
++ |
Постфиксный оператор инкремента |
-- |
Постфиксный оператор декремента |
++ |
Префиксный оператор инкремента |
-- |
Префиксный оператор декремента |
! |
Логическое «НЕ» |
- |
Унарный минус |
+ |
Унарный плюс |
тип |
Явное преобразование типа |
sizeof |
Получение размерности операнда в байтах |
* |
Умножение |
/ |
Деление |
% |
Остаток (деление по модулю) |
+ |
Сложение |
- |
Вычитание |
<< |
Сдвиг влево |
>> |
Сдвиг вправо |
< |
Меньше |
<= |
Меньше или равно |
> |
Больше |
>= |
Больше или равно |
== |
Равно |
!= |
Не равно |
& |
Побитовое «И» |
^ |
Побитовое исключающее «ИЛИ» |
| |
Побитовое «ИЛИ» |
&& |
Логическое «И» |
|| |
Логическое «ИЛИ» |
? : |
Условная операция |
=, +=, -=, *=, /=, %=, <<=, >>=, &=, |=, ^= |
Простое и составные присваивания |
Изменить порядок выполнения операций внутри выражения можно с помощью круглых скобок. В любом случае, когда возникают сомнения в определении приоритета выполнения операций лучше использовать круглые скобки (на первых порах это особенно рекомендуется).