Прості типи

Простими власними типами в C++ є bool, double, int і char. Ці типи мають набір значень і представлення, прив'язані до низькорівневої архітектури машини, на якій працює компілятор. У старих системах C++ немає власного булевого типу. У них використовується нуль для позначення false і ненульові значення — для true.

Прості типи C++ можуть модифікуватися ключовими словами short, long, signed і unsigned для отримання додаткових простих типів. У наступній таблиці приведені ці типи в послідовності від коротких до довших. Тут довжина означає кількість байт, що відводяться для зберігання типу.

Фундаментальні типи даних
bool    
char signed char unsigned char
wchar_t    
short int long
unsigned short unsigned unsigned long
float double long double

Цей список починається з найкоротшого типу bool і закінчується щонайдовшим long double. Існує вимога, згідно з якою кожен довший тип повинен займати при зберіганні не менше місця, чим попередній тип. На більшості машин bool і char зберігаються в одному байті. На багатьох персональних комп'ютерах int займає два байти, тоді як long, float і double вимагають чотири байти для зберігання.

У C++ існує оператор sizeof. Він використовується для визначення кількості байт, необхідного для зберігання конкретного об'єкту або типу.

//Перевіримо !

cout << sizeof(int)<< "<=" << sizeof(long) << endl;

Діапазон цілих значень для цієї системи визначений в стандартному заголовному файлі limits.h. Ось деякі приклади:

#define CHAR_BIT 8 //біт на символ
#define SCHAR_MIN (- 128) //signed char min
#define SCHAR_MAX 127 //signed char max
#define UCHAR_MAX 255 //unsigned char max
#define INT_MAX 2147483647 //int max
#define INT_MIN (- 2147483648) //int min
#define UINT_MAX 429496729U //unsigned int max

Діапазон значень з плаваючою точкою для цієї системи визначений в стандартному заголовному файлі float.h. Ось деякі приклади:

#define FLT_EPSILON (( float) 1.19209290е-07) //single
#define FLT_MIN ((float) 1.17549435e-38) //float min
#define FLT_MAX ((float) 3.40282347e+38) //float max
#define DBL_EPSILON 2 . 2204460492503131e-16 //double
#define DBL_MIN 2 . 2250738585072014e-308 //double min
#define DBL_MAX 1. 7976931348623157e+308 //double max

У нових системах файл limits містить шаблон numeric_limits, який дозволяє, наприклад, наступний запис:

numeric_limits<type>::max() //максимальне значення для <типу>