![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Арифметические операции
Унарный плюс (+) и унарный минус (-) Единственный операнд любого арифметического типа. Формат записи:
+ < Выражение > - < Выражение >
Унарный плюс возвращает значение операнда без изменений. Унарный минус (его иногда называют арифметическим отрицанием) меняет знак операнда на обратный.
Умножение - * - бинарная операция. Примеры записи:
a * b 2 * 3 a * 0.56
Операнды могут быть любого арифметического типа данных. Тип данных результата операции определяется правилами неявного преобразования типов. При выполнении возможен выход реального значения результата за допустимый диапазон значений типа данных – при этом значение результата операции трудно предсказать. Например:
cout < < 1000000 * 1000000; // Результат: -727379968 cout < < 1е20f * 1e20f; // Результат: 1.#INF – переполнение (+ бесконечность) cout < < 1е20f * -1e20f; // Результат: - 1.#INF – переполнение (- бесконечность) Деление - / - бинарная операция. Примеры записи:
a / b 2 / 3 a / 0.56
Если оба операнда являются целыми, то результат деления будет целым. В этом случае целый результат получается отбрасыванием дробной части от полученного реального значения (не округление). Например:
5 / 3 - результат равен 1.
Если все же в результате выполнения этой операции требуется получить значение с дробной частью, необходимо чтобы хотя бы один из операндов был вещественного типа. Например:
5.0 / 3 или 5 / 3. или 5.0 / 3.0 или 5 / 3f или 5f / 3 или 5f / 3f или float (5) / 3 или double (5) / 3
Результатом вычисления всех этих выражений будет значение 1.6666… одного из вещественных типов. Однако, например, выражение double (5 / 3) хотя и будет вещественного типа, но его значение все равно будет равно 1, поскольку сначала будет вычислено выражение в скобках, результат которого будет целого типа и будет равен 1, а затем это значение будет приведено к вещественному типу. При выполнении операции возможен выход реального значения результата за допустимый диапазон значений типа данных – при этом значение результата операции трудно предсказать. Например:
cout < < 1е35f / 0.0001f; // Результат: 1.#INF – переполнение (+ бесконечность) cout < < 1е20f / -0.0001f; // Результат: - 1.#INF – переполнение (- бесконечность) cout < < 1е200 / 1e-200; // Результат: 1.#INF – переполнение (бесконечность)
Если первый операнд вещественного типа, то деление на 0 дает значение 1.#INF или - 1.#INF. Если же он целого типа, возникает ошибка режима исполнения (деление на 0).
Остаток от деления - % - бинарная операция. Операнды только целого типа. Результат операции целого типа. Например:
5 % 1 - результат 0 5 % 2 - результат 1 5 % 3 - результат 2 5 % 4 - результат 1 5 % 5 - результат 0 5 % 6 - результат 5 …..
Если второй операнд равен 0, возникает ошибка режима исполнения (деление на 0).
Сложение (+) и вычитание (-) – бинарные операции. Операнды могут быть любых арифметических типов данных. Примеры записи: a + b a – b
Тип результата операций определяется правилами неявного преобразования типов. При выполнении операций возможны ошибки переполнения и некорректного преобразования типов данных операндов. Например:
unsigned short n = 0, m; m = n - 1; cout < < m < < endl; // На экран будет выведено 65535 n = m + 1; cout < < n < < endl; // На экран будет выведено 0
Инкремент (++) и декремент (--) – унарные операции увеличения и уменьшения операнда на 1 соответственно. Операнд может быть любого арифметического типа данных. Операции имеют две формы – префиксную (++a, --a) и постфиксную (a++, a--). Независимо от формы операция инкремента эквивалентна следующему оператору: a = a + 1;
а операция декремента следующему:
a = a - 1; Например:
#include < iostream> using namespace std;
|