фундаментальні типи

[Ред] Логічний тип

bool - тип, здатний зберігати одне з двох значень: true (істина) або false (брехня).

[Ред] Символьні типи

signed char - тип для знакового представлення символів. unsigned char - тип для беззнакового представлення символів. char - тип для представлення символів, який може найефективніше оброблятися в цільовій системі (еквівалентний signed char або unsigned char. але все ж відмінний від них тип). wchar_t - тип для широкого представлення символів. char16_t - тип для представлення символів в UTF-16. (Починаючи з C ++ 11) char32_t - тип для представлення символів в UTF-32. (Починаючи з C ++ 11)

[Ред] Цілочисельні типи

int - базовий цілочисельний тип. Може бути опущений, якщо представлений будь-який з модифікаторів. Якщо не представлений жоден з модифікаторів розміру, гарантовано має ширину не менше 16 біт. Проте, на 32/64-бітних системах майже завжди має ширину не менше 32 біт (див. Нижче).

[Ред] Модифікатори

Модифікують цілочисельний тип. Можуть розташовуватися в будь-якому порядку. Тільки один модифікатор з кожної групи може бути представлений в імені типу.

signed - цільової тип буде мати знакова уявлення (за замовчуванням, якщо не представлений жоден з варіантів). unsigned - цільової тип буде мати беззнаковое уявлення.

short - цільової тип буде оптимізований за розміром і мати ширину не менше 16 біт. long - цільової тип буде мати ширину не менше 32 біт. long long - цільової тип буде мати ширину не менше 64 біт. (Починаючи з C ++ 11)

[Ред] Властивості

Дана таблиця узагальнює всі доступні цілочисельні типи і їх властивості:

Крім мінімального розміру в бітах стандарт C ++ гарантує, що

1 == sizeof # 40; char # 41; <= sizeof ( short ) <= sizeof ( int ) <= sizeof ( long ) <= sizeof ( long long ).

Примітка: можливий крайній випадок, в якому байти мають розмір 64 біта, всі типи (включаючи char) має ширину 64 біта, і sizeof повертає 1 для всіх типів.

Примітка: целочисленная арифметика визначається по-різному для знакових і беззнакових цілочисельних типів. Див. Арифметичні оператори. зокрема целочисленное переповнення.

[Ред] Моделі даних

Вибори розмірів фундаментальних типів в кожній реалізації в сукупності називаються моделлю даних. Широке застосування знайшли 4 моделі даних:

  • LP32 або 2/4/4 (int - 16 біт, long і покажчик - 32 біта)
  • Win16 API
  • ILP32 або 4/4/4 (int, long і покажчик - 32 біта)
  • Win32 API
  • Unix і Unix-подібні системи (Linux, Mac OS X)
  • LLP64 або 4/4/8 (int і long - 32 біта, покажчик - 64 біта)
  • Win64 API
  • LP64 або 4/8/8 (int - 32 біта, long і покажчик - 64 біта)
  • Unix і Unix-подібні системи (Linux, Mac OS X)

Інші моделі дуже рідкісні. Наприклад, ILP64 (8/8/8. Int, long і покажчик - 64 біта) з'явилася лише в деяких ранніх 64-бітних Unix-системах (н-р, Unicos на комп'ютерах Cray).

[Ред] Типи з плаваючою точкою

float - тип з плаваючою точкою одинарної точності. Зазвичай 32-бітний тип з плаваючою точкою формату IEEE-754 double - тип з плаваючою точкою подвійної точності. Зазвичай 64-бітний тип з плаваючою точкою формату IEEE-754 long double - тип з плаваючою комою з високою точністю. Не обов'язково відображається на типи IEEE-754. Зазвичай 80-бітний тип з плаваючою точкою формату x87 на архітектурі x86 і x86-64.

[Ред] Проміжки значень

Дана таблиця містить граничні значення найбільш распространнёних числових форматів. Так як Стандарт C ++ дозволяє будь-яке представлення знакових цілих чисел, в таблиці присутні як мінімальні гарантовані обмеження (відповідні меж зворотного коду або прямого коду), так і межі найбільш використовуваної реалізації - додаткового коду. Проте, всі популярні моделі даних (включаючи всі з ILP32, LP32, LP64, LLP64) використовують уявлення в додатковому коді.