Язык программирования C++ |
Встроенные типы данных
Вещественные числа
Вещественные числа в Си++ могут быть одного из трех типов: с одинарной точностью — float, с двойной точностью – double, и с расширенной точностью – long double.
float x; double e = 2.9; long double s;
В большинстве реализаций языка представление и диапазоны значений соответствуют стандарту IEEE (Institute of Electrical and Electronics Engineers) для представления вещественных чисел. Точность представления чисел составляет 7 десятичных значащих цифр для типа float, 15 значащих цифр для double и 19 — для типа long double.
Вещественные числа записываются либо в виде десятичных дробей, например 1.3, 3.1415, 0.0005, либо в виде мантиссы и экспоненты: 1.2E0, 0.12e1. Отметим, что обе предыдущие записи изображают одно и то же число 1.2.
По умолчанию вещественная константа принадлежит к типу double. Чтобы обозначить, что константа на самом деле float, нужно добавить символ f или F после числа: 2.7f. Символ l или L означает, что записанное число относится к типу long double.
const float pi_f = 3.14f; double pi_d = 3.1415; long double pi_l = 3.1415L;
Для вещественных чисел определены все стандартные арифметические операции сложения ( + ), вычитания ( - ), умножения ( * ), деления ( / ) и изменения знака ( - ). В отличие от целых чисел, операция нахождения остатка от деления для вещественных чисел не определена. Аналогично, все битовые операции и сдвиги к вещественным числам неприменимы; они работают только с целыми числами. Примеры операций:
2 * pi; (x – e) / 4.0
Вещественные числа можно сравнивать на равенство ( == ), неравенство ( != ), больше ( > ), меньше ( < ), больше или равно ( >= ) и меньше или равно ( <= ). В результате операции сравнения получается логическое значение истина или ложь.
Если арифметическая операция применяется к двум вещественным числам разных типов, то менее точное число преобразуется в более точное, т.е. float преобразуется в double и double преобразуется в long double. Очевидно, что такое преобразование всегда можно выполнить без потери точности.
Если вторым операндом в операции с вещественным числом является целое число, то целое число преобразуется в вещественное представление.
Хотя любую целую величину можно представить в виде вещественного числа, при таком преобразовании возможна потеря точности (для больших чисел).
Логические величины
В языке Си++ существует специальный тип для представления логических значений bool. Для величин этого типа существует только два возможных значения: true (истина) и false (ложь). Объявление логической переменной выглядит следующим образом:
bool condition;
Соответственно, существуют только две логические константы – истина и ложь. Они обозначаются, соответственно, true и false.
Для типа bool определены стандартные логические операции: логическое И ( && ), ИЛИ ( || ) и НЕ ( !).
// истинно, если обе переменные cond1 и cond2, истинны cond1 && cond2 // истинно, если хотя бы одна из переменных истинна cond1 || cond2 // результат противоположен значению cond1 !cond1
Как мы уже отмечали ранее, логические значения получаются в результате операций сравнения. Кроме того, в языке Си++ принято следующее правило преобразования чисел в логические значения: ноль соответствует значению false, и любое отличное от нуля число преобразуется в значение true. Поэтому можно записать, например:
int k = 100; while (k) { // выполнить цикл 100 раз k--; }