Типи даних мови C
У мові програмування C поняття типів даних відносять до великої системи оголошення змінних різних типів. Сама мова надає базові арифметичні типи, а також синтаксис для створення масивів.
Концепція типу даних
Головна мета будь-якої програми полягає в обробці даних. Дані різного типу зберігаються і обробляються по-різному. У будь-якій алгоритмічній мові кожна константа, змінна, результат обчислення виразу або функції повинні мати певний тип.
Тип даних визначає:
- внутрішнє представлення даних в пам'яті комп'ютера;
- область значень, які можуть приймати величини цього типу;
- операції і функції, які можна застосовувати до величин цього типу.
Виходячи з цих характеристик, програміст вибирає тип кожної величини, використовуваної в програмі для подання реальних об'єктів. Обов'язковий опис типу дозволяє компілятору проводити перевірку допустимості різних конструкцій програми. Від типу величини залежать машинні команди, які будуть використовуватися для обробки даних.
Всі типи мови C можна розділити на основні і складові. У мові C визначено шість основних типів даних для представлення цілих, дійсних, символьних і логічних величин. На основі цих типів програміст може вводити опис складових типів. До них належать масиви, перерахування, функції, структури, посилання, визначники, об'єднання і класи.
Основні типи даних часто називають арифметичними, тому що їх можна використовувати в арифметичних операціях. Для опису основних типів мови C використовують такі службові слова:
- int (цілий);
- char (символьний);
- bool (логічний);
- float (дійсний);
- double (дійсний з подвійною точністю);
- void (порожній, не має значення).
- short
Базові типи
Кожна змінна має певний тип. І цей тип визначає, які значення може мати змінна, які операції з нею можна робити і скільки байт в пам'яті вона буде займати.
Типи даних
У мові C визначені такі базові типи даних:
- bool: логічний тип. Може приймати одну з двох значень true (істина) і false (брехня). Кількість пам'яті для цього типу точно не визначена.
- char: представляє один символ в кодуванні ASCII.
- signed char і unsigned char: представляє один символ.
- wchar_t: представляє розширений символ.
- char16_t і char32_t: представляє один символ в кодуванні Unicode.
- int: представляє ціле число.
- short і unsigned short: також представляють ціле число.
- unsigned int: представляє позитивне ціле число.
- long, long long і unsigned long long: також представляють ціле число.
- float, double і long double: представляють дійсне число ординарної точності з рухомою комою.
- void: тип без значення.
Символьні типи
Для представлення символів в додатку використовуються типи: char, wchar_t, char16_t і char32_t.
Цілочисельні типи
Цілочисельні типи представлені такими типами: short, unsigned short, int, unsigned int, long, unsigned long, long long і unsigned long long.
Типи чисел з рухомою комою
Типи чисел з рухомою комою та дробові числа представлені такими типами як float, double і long double.
Уточнення діапазону значень
Для уточнення внутрішнього подання та діапазону значень стандартних типів мова C використовує чотири специфікатори типу:
- short (короткий);
- long (довгий);
- signed (знаковий);
- unsigned (беззнаковий).
Розміри типів даних
У таблиці для кожного типу вказано розмір, який він займає в пам'яті. Однак варто зазначити, що граничні розміри для типів розробники компіляторів можуть вибирати самостійно, виходячи з апаратних можливостей комп'ютера. Стандарт встановлює лише мінімальні значення, які повинні бути. Наприклад, для типів int і short мінімальне значення - 16 біт, для типу long - 32 біта. При цьому розмір типу long повинен бути не менше розміру типу int, а розмір типу int - не менший за розмір типу short, а розмір типу long double повинен бути більший за double. Навіть в рамках однієї платформи різні компілятори можуть по різному підходити до розмірів деяких типів даних. Але в цілому використовуються ті розміри, які вказані в таблиці, поданій нижче.
Тип | Розмір, байт | Значення |
bool | 1 | true або false |
unsigned short int | 2 | від 0 до 65 535 |
short int | 2 | від -32 768 до 32 767 |
unsigned long int | 4 | від 0 до 4 294 967 295 |
long int | 4 | від -2 147 483 648 до 2 147 483 647 |
int (16 розрядів) | 2 | від -32 768 до 32 767 |
int (32 розряди) | 4 | від -2 147 483 648 до 2 147 483 647 |
unsigned int (16 розрядів) | 2 | від 0 до 65 535 |
unsigned int (32 розряди) | 4 | від 0 до 4 294 967 295 |
char | 1 | від 0 до 255 |
float | 4 | від 1.2е-38 до 3.4е38 |
double | 8 | від 2.2е-308 до 1.8е308 |
long double | 10 | від 3.4е-4932 до 3.4е+4932 |
Специфікатор auto
Іноді буває важко визначити тип виразу. І згідно з останніми стандартами можна надати компілятору самому виводити тип об'єкта. І для цього застосовується специфікатор auto. При цьому, якщо ми визначаємо змінну зі специфікатором auto, ця змінна повинна бути обов'язково ініціалізована будь-яким значенням.
Контроль типів
Контроль типів має забезпечуватися розробником програми. Основною перевагою потоків C є автоматичний контроль типів.