ЗАМЕЧАНИЕ. В языке С++ предусмотрен оператор sizeof, с помощью которого можно определить количество байт, необходимое для хранения объекта или типа. Например, можно вывести на экран количество байт для типа long double с помощью инструкции cout << sizeof(long double);
Значениями вещественного типа являются элементы определяемого реализацией подмножества вещественных чисел. Все операции над такими величинами выполняются с некоторой степенью точности, а точность их выполнения зависит от конкретной реализации.
При условии, что хотя бы один из операндов относится к вещественному типу (второй операнд может быть и целого тип), следующие операции в результате выполнения будут формировать вещественное значение:
Значащими цифрами числа называют все цифры в его записи, начиная с первой ненулевой слева. Значащую цифру числа называют верной, если абсолютная погрешность числа не превосходит единицы разряда, соответствующего этой цифре.
В стандартном файле float.h определяется диапазон значений для вещественных чисел:
#define DBL_MAX 1.7976931348623158e+308 /* max value */
#define DBL_MIN 2.2250738585072014e-308 /* min positive value */
#define FLT_MAX 3.402823466e+38F /* max value */
#define FLT_MIN 1.175494351e-38F /* min positive value */
Логические переменные типа bool могут принимать одно из двух значений: true (истина) или false (ложь). При этом в языке принята гибкая интерпретация для true и false. По определению, true имеет значение 1 при преобразовании к целому типу, а false – 0. Можно целые значения преобразовать в логические, и при этом ненулевые целые преобразуются в true, а ноль – в false. Например, допустимы следующие объявления:
bool a = -3; // a принимает значение true
int i = false; //i принимает значение 0.
В языке С++ предусмотрены следующие три логических (или булевских) операции:
! – логическое отрицание (NOT)
&& – логическое умножение "И" (AND)
|| – логическое сложение "ИЛИ" (OR)
Операция логического отрицания является унарной, т.е. применяется к одному операнду, размещаемому справа от !. Правила выполнения операции выглядят так:
! FALSE = TRUE
! TRUE = FALSE
Правила выполнения бинарных операций && и || приведены в следующей таблице:
Операнд
Результат операции
X
Y
X && Y
X || Y
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
TRUE
TRUE
FALSE
FALSE
TRUE
TRUE
TRUE
TRUE
TRUE
Правила выполнения логических операций определены таким образом, что логическое отрицание ! (NOT) имеет, как и всякая унарная операция, наивысший приоритет, следующий приоритет у операции логического умножения && (AND), а самый низкий – у операции || (OR). Логические выражения могут содержать не только логические операции, но и сравнения (отношения типа X<Y), которые имеют более низкий приоритет выполнения.
В арифметических выражениях логические значения преобразуются в целые типа int.
Например: int k = true + true; // в результате k получает значение 2.
!!! Указатель можно неявно преобразовать в bool, при этом ненулевой указатель принимает значение true, а нулевой – false.
1.5. Символьные и целочисленные типы в С++
Для работы с символьными данными в языке С++ предусмотрен специальный тип данных сhar, значения которого в памяти компьютера занимают 1 байт.
Каждый используемый символ в компьютере имеет уникальный код (индивидуальный номер) в кодовой таблице. Так в соответствии с таблицей ASCII-кодов (American Standard Code for Information Interchange — американский стандартный код для обмена информацией) все допустимые символы имеют коды от 0 до 255, символы с 0-го по 31-й являются неотображаемыми на экране монитора, символ с кодом 32 означает пробел, а номера некоторых других символов следующие:
В стандартном заголовочном файле limits.h определяется диапазон целых значений для данной версии С++. Например, можно найти следующие определения для Visual Studio C++:
#define INT_MIN (-2147483647 - 1) /* minimum (signed) int value */
#define INT_MAX 2147483647 /* maximum (signed) int value */
#define UINT_MAX 0xffffffff /* maximum unsigned int value */