Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Діапазони значень простих типів даних для IBM PC




Основні типи даних

Основні ( стандартні ) типи даних часто називають арифметичними, оскільки їх можна використовувати в арифметичних операціях.

Для опису основних типів визначені наступні ключові слова:

1. int (цілий);

2. char (символьний);

3. wchar_t (розширений символьний);

4. bool (логічний);

5. float (дійсний);

6. double (дійсний з подвійною точністю).

Перші чотири типа називають цілочисельними (цілими), останні два — типами з плаваючою крапкою. Код, який формує компілятор для обробки цілих величин, відрізняється від коду для величин з плаваючою крапкою.

Існує чотири специфікатори типу, що уточнюють внутрішнє представлення і діапазон значень стандартних типів:

1. short (короткий);

2. long (довгий);

3. signed (знаковий);

4. unsigned (беззнаковий).

 

Тип Діапазон значень Розмір (байт)
bool true і false  
signed char -128... 127  
unsigned char 0... 255  
signed short int -32 768... 32 767  
unsigned short int 0... 65 535  
signed long int -2 147 483 648... 2 147 483 647  
unsigned long int 0... 4 294 967 295  
float 3.4e-38... 3.4e+38  
double 1.7e-308... 1.7e+308  
long double 3.4e-4932... 3.4e+4932  

Для дійсних типів в таблиці приведені абсолютні величини мінімальних і максимальних значень.

Для написання переносимих на різні платформи програм не можна робити припущень про розмір типу int. Для його отримання необхідно користуватися операцією sizeof, результатом якої є розмір типу в байтах. Наприклад, для операційної системи MS-DOS sizeof (int) дасть в результаті 2, а для Windows 9X або OS/2 результатом буде 4.

У стандарті ANSI діапазони значень для основних типів не задаються, визначаються тільки співвідношення між їх розмірами, наприклад:

sizeof(float) sizeof(double) £ sizeof(long double)

sizeof(char) £ sizeof(short) £ sizeof(int) £sizeof(long)

Мінімальні і максимальні допустимі значення для цілих типів залежать від реалізації і приведені в заголовному файлі <limits.h> (<climits>), характеристики дійсних типів — у файлі <float.h> (<cfloat>), а також в шаблоні класу numeric_limits.

Різні види цілих і дійсних типів, що розрізняються діапазоном і точністю представлення даних, введені для того, щоб дати програмістові можливість найефективніше використовувати можливості конкретної апаратури, оскільки від вибору типу залежить швидкість обчислень і об'єм пам'яті. Але оптимізована для комп'ютерів якого-небудь одного типу програма може стати непереносимою на інші платформи, тому в загальному випадку слід уникати залежностей від конкретних характеристик типів даних.

Цілий тип (int)

Розмір типу int не визначається стандартом, а залежить від комп'ютера і компілятора. Для 16-розрядного процесора під величини цього типу відводиться 2 байти, для 32-розрядного — 4 байти.

Специфікатор short перед ім'ям типу указує компілятору, що під число потрібно відвести 2 байти незалежно від розрядності процесора. Специфікатор long означає, що ціла величина займатиме 4 байти. Таким чином, на 16-розрядному комп'ютері еквіваленти int і short int, а на 32-розрядному — int і long int.

Внутрішнє представлення величини цілого типу — ціле число в двійковому коді. При використанні специфікатора signed старший біт числа інтерпретується як знаковий (0 — додатне число, 1 — від’ємне). Специфікатор unsigned дозволяє представляти тільки додатні числа, оскільки старший розряд розглядається як частина коду числа. Таким чином, діапазон значень типу int залежить від специфікаторів. За умовчанням всі цілочисельні типи вважаються знаковими, тобто специфікатор signed можна опускати.

Константам, що зустрічаються в програмі, приписується той або інший тип відповідно до їх вигляду. Якщо цей тип з яких-небудь причин не влаштовує програміста, він може явно вказати необхідний тип за допомогою суфіксів L, l (long) і U, u (unsigned). Наприклад, константа 32L матиме тип long і займатиме 4 байти. Можна використовувати суфікси L і U одночасно, наприклад, 0x22UL або 05Lu.

Типи з плаваючою крапкою (float, double і long double)

Стандарт C++ визначає три типу даних для зберігання дійсних значень: float, double і long double.

Типи даних з плаваючою крапкою зберігаються в пам'яті комп'ютера інакше, ніж цілочисельні. Внутрішнє представлення дійсного числа складається з двох частин — мантиси і порядку. У IBM PC-сумісних комп'ютерах величини типу float займають 4 байти, з яких один двійковий розряд відводиться під знак мантиси, 8 розрядів під порядок і 23 під мантису. Мантиса — це число, більше 1.0, але менше 2.0. Оскільки старша цифра мантиси завжди рівна 1, вона не зберігається.

Для величин типу double, що займають 8 байт, під порядок і мантису відводиться 11 і 52 розряди відповідно. Довжина мантиси визначає точність числа, а довжина порядку — його діапазон.

При однаковій кількості байт, що відводиться під величини типу float і long int, діапазони їх допустимих значень сильно розрізняються із-за внутрішньої форми уявлення. Специфікатор 1ong перед ім'ям типу double указує, що під величину відводиться 10 байт.

Константи з плаваючою крапкою мають за умовчанням тип double. Можна явно вказати тип константи за допомогою суфіксів F, f (float) і L, 1 (long). Наприклад, константа 2E+6L матиме тип 1ong doublе, а константа 1.82f — тип fIoat.

Символьний тип (char)

Під величину символьного типу відводиться кількість байт, достатнє для розміщення будь-якого символу з набору символів для даного комп'ютера, що і зумовило назву типу. Як правило, це 1 байт.

Тип char, як і інші цілі типи, може бути із знаком або без знаку. У величинах із знаком можна зберігати значення в діапазоні від -128 до 127. При використанні специфікатора unsigned значення можуть знаходитися в межах від 0 до 255. Це досить для зберігання будь-якого символу з 256-символьного набору ASCII. Величини типу char застосовуються також для зберігання цілих чисел, що не перевищують межі вказаних діапазонів.

Розширений символьний тип (wchar_t)

Тип wchar_t призначений для роботи з набором символів, для кодування яких недостатньо 1 байта, наприклад, Unicode.

Розмір цього типу залежить від реалізації; як правило, він відповідає типу short. Строкові константи типу wchar_t записуються з префіксом L, наприклад, L"Gates".

Логічний тип (bool)

Величини логічного типу можуть приймати тільки значення true і false, що є зарезервованими словами. Внутрішня форма представлення значення false — 0 (нуль). Будь-яке інше значення інтерпретується як true. При перетворенні до цілого типу true має значення 1.




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 1183; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.02 сек.