1.3. Вещественные типы
Значениями вещественного типа являются элементы определяемого реализацией подмножества вещественных чисел. Все операции над такими величинами выполняются с некоторой степенью точности, а точность их выполнения зависит от конкретной реализации.
При условии, что хотя бы один из операндов относится к вещественному типу (второй операнд может быть и целого тип), следующие операции в результате выполнения будут формировать вещественное значение:
* (умножение); / (деление); + (сложение); – (вычитание).
Название типа |
Диапазон допустимых значений |
Количество верных цифр |
Размер в байтах |
float |
1.175e-38...3.40e+38 |
7-8 |
4 |
double |
2.23e-308...1.798e+308 |
15-16 |
8 |
Значащими цифрами числа называют все цифры в его записи, начиная с первой ненулевой слева. Значащую цифру числа называют верной, если абсолютная погрешность числа не превосходит единицы разряда, соответствующего этой цифре.
В стандартном файле 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 */
1.4. Логический тип bool
Логические переменные типа 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.
-
Символьные и целочисленные типы в С++
Для работы с символьными данными в языке С++ предусмотрен специальный тип данных сhar, значения которого в памяти компьютера занимают 1 байт.
Каждый используемый символ в компьютере имеет уникальный код (индивидуальный номер) в кодовой таблице. Так в соответствии с таблицей ASCII-кодов (American Standard Code for Information Interchange — американский стандартный код для обмена информацией) все допустимые символы имеют коды от 0 до 255, символы с 0-го по 31-й являются неотображаемыми на экране монитора, символ с кодом 32 означает пробел, а номера некоторых других символов следующие:
'0'...'9' – 48...57, 'A'...'Z' – 65...90, 'a'...'z' – 97...122,
'А'...'Я' – 128...159, 'а'...'п' – 160...175, 'р'...'я' – 224...239.
Основные характеристики символьного типа описываются в таблице:
Название |
Диапазон допустимых значений |
Размер в байтах |
char |
0…255 |
1 |
signed char |
-128…+127 |
1 |
unsigned char |
0…255 |
1 |
Основные характеристики целочисленных типов описываются в следующей таблице:
Название |
Диапазон допустимых значений |
Размер в байтах |
short |
-32768…+32767 |
2 |
int |
-2147483648…+2147483647 |
4 |
unsigned short |
0…65535 |
2 |
unsigned int |
0…+4294967295 |
2 |
Типы unsigned short и unsigned int используются для представления целых значений без знака, а типы short и int – со знаком.
При выполнении действий над целыми операндами следующие арифметические операции вырабатывают целочисленные значения:
* – умножение; / – деление; % – остаток от деления целых чисел;
+ – сложение; - – вычитание.
В стандартном заголовочном файле 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 */