- •3.8. Упражнения 49
- •Введение
- •1. Базовые элементы
- •1.1. Комментарии
- •1.2. Функция «main»
- •1.3. Идентификаторы и пространства имен
- •1.4. Типы
- •1.5. Переменные
- •1.7. Константы
- •1.6. Преобразование типов
- •1.8. Потоковый ввод – вывод
- •1.9. Операции
- •1.9.1. Арифметические операции
- •1.9.2. Поразрядные операции
- •1.9.3. Условный оператор
- •1.9.4. Операции отношения
- •1.9.5. Логические операции
- •1.10. Стандартные математические функции
- •1.11. Упражнения
- •2. Базовые конструкции
- •2.1 Ветвление
- •2.1.1. Конструкция «if – else»
- •2.1.2. Конструкция «switch»
- •2.2. Циклы
- •2.2.1. Цикл «for»
- •2.2.2. Цикл «while»
- •2.2.3. Цикл «do – while»
- •2.2.4. Операторы циклов
- •2.2.5. Вложенность
- •2.3. Упражнения
- •2.3.1. Ветвления
- •2.3.2. Циклы
- •2.3.3. Вложенность
- •3. Указатели. Массивы. Структуры
- •3.1. Указатели
- •3.2. Массивы
- •3.2.1. Статические массивы
- •3.2.2. Динамические массивы
- •3.4. Ссылки
- •3.5. Структуры
- •3.6. Объединение
- •3.7. Переопределение типов
- •3.8. Упражнения
- •3.8.1. Статические и динамические массивы
- •3.8.2. Многомерные массивы
- •3.8.3. Строки
- •4. Функции
- •4.1. Простые функции
- •4.2. Рекурсия
- •4.3. Указатели и ссылки
- •4.3.1. Передаваемые параметры
- •4.3.2. Возвращаемые значения
- •4.3.3. Ссылки и структуры в функциях
- •4.3.4. Указатели и массивы в функциях
- •4.3.5. Указатели и ссылки на функцию
- •4.4. Шаблоны функций
- •4.5. Упражнения
- •4.5.1. Простые функции
- •4.5.2. Параметры – ссылки и параметры — указатели
- •5. Стандартные классы
- •5.1. Класс «pair»
- •5.2. Класс «complex»
- •5.3. Класс «string»
- •5.4. Контейнеры. Алгоритмы. Итераторы
- •5.5. Класс «vector»
- •5.6. Упражнения
- •5.6.1. Класс «string»
- •5.6.2. Класс «vector»
- •6. Файловый ввод – вывод
- •6.1. Операции
- •6.2. Методы
- •6.3. Флаги
- •6.4. Двоичный режим
- •6.5. Упражнения
- •Ллитература
1.9. Операции
Работа с переменными осуществляется в выражениях, которые содержат знаки операции и операнды. Операции могут производиться над одним, двумя или тремя операндами, соответственно различают унарные, бинарные и тернарные операции.
Любое использование операндов и знаков операций называется выражением. Выражение может состоять из нескольких знаков операций и операндов. В таком случае, операции выполняются в соответствии со своими приоритетами. Порядком выполнения можно управлять, используя скобки «()».
Обычно, результат операции сохраняется в некоторой переменной. Это сохранение производится посредством операции присваивания «=». Все операции можно также разделить на группы в соответствии с их назначением: арифметические, поразрядные, логические, отношения и условный.
1.9.1. Арифметические операции
К бинарным арифметическим операциям относятся следующие: «+», «–», «*», «/», «%». К унарным арифметическим операциям относятся операции: «–», «++» и «––».
Листинг 1.7. Арифметические операции.
#include <iostream>
using namespace std;
int main (void)
{
int x;
cout << "Enter x: ";
cin >> x;
int y;
cout << "Enter y: ";
cin >> y;
cout << "x/y\t= " << x / y << " and " << x % y << endl;
cout << "x/y\t= " << 1.0 * x / y << endl;
cout << "-x+2y\t= " << -x + 2 * y << endl;
cout << "(2-x)y\t= " << (-x + 2) * y << endl;
return 0;
}
Таблица 1.5. Арифметические операции.
Знак |
Синтаксис |
Описание |
– |
–a |
Взятие отрицательного значения a |
+ |
a + b |
Сумма a и b |
– |
a – b |
Разность a и b |
* |
a * b |
Произведение a и b |
/ |
a / b |
Деление a на b |
% |
a % b |
Остаток от деления a на b |
++ |
++a или a++ |
Префиксный или постфиксный инкремент a |
– – |
– –a или a– – |
Префиксный или постфиксный декремент a |
Операция инкремента (увеличение значения на 1), как и декремента (уменьшение значения на 1), может быть записана в постфиксной (когда знак записан после операнда) или префиксной (когда знак записан до операнда) формах. Различие форм заключается в приоритетах данных операций. Операция, записанная в префиксной форме выполнится первой среди нескольких операций, а в постфиксной – самой последней, в том числе после операции присваивания или записи в поток вывода. Наглядно различия демонстрирует следующий код.
Листинг 1.8. Префиксная и постфиксная записи операций инкремента и декремента.
#include <iostream>
using namespace std;
int main (void)
{
int x = 8;
cout << x << endl;
cout << ++x << endl;
cout << x++ << endl;
cout << x << endl;
return 0;
}
Стоит заметить, что язык С++ позволяет записывать некоторые операции с последующим присваиванием сокращенным образом, что позволяет уменьшить код и сделать его более наглядным. Для арифметических операций: «+=», «–=», «*=», «/=», «%=».
