Існує лише кілька основних типів даних у C:
char
| один байт, здатний утримувати один знак локального набору символів
|
int
| ціле, типово відображає натуральний розмір цілих машини
|
float
| одинарної точності число з рухомою точкою
|
double
| подвійної точності число з рухомою точкою
|
На додачу, існує певна кількість класифікаторів, які можна використати стосовно вищевказаних основних типів. Так, short із long застосовуються з цілими:
short int sh;
long int counter;
Слово int можна опустити в таких оголошеннях і, типово, саме так і роблять.
Ідея полягає в тому, що short та long мають забезпечувати різними довжинами цілих, там де це має практичний сенс; int, як правило, буде натуральним розміром цілого для певної машини.short часто має 16-бітну довжину, а int — 16, або 32-бітну. Кожний компілятор може вибрати відповідні розміри для власного устаткування, єдиним обмеженням будучи те, що short та intповинні мати щонайменше 16 біт, long — 32 біти, short не може бути довшим за int, який, в свою чергу — не довшим за long.
Класифікатори signed або unsigned можна застосовувати щодо char або будь-якого цілого. Беззнакові, unsigned, числа завжди додатні або нуль і підлягають правилам арифметичного модуля 2n, де n — це кількість бітів використованого типу. Тож, наприклад, якщо char має довжину 8 бітів, змінні типу unsigned char матимуть значення між 0 та 255, тоді як signed char — між -128 та 127 (в машині з двійковою системою). Чи звичайні char вживаються зі знаком, чи є беззнаковими, залежить від машини, але друковні знаки завжди додатні.
Тип long double вказує на число з рухомою точкою підвищеної точності. Так само, як і у випадку з цілими, розміри об'єктів з рухомою точкою залежать від реалізації; float, double іlong double можуть представляти один, два або три відмінних розміри.
Стандартні файли заголовка <limits.h> і <float.h> містять символічні константи для всіх трьох розмірів, разом із іншими властивостями машини та компілятору. Це все розглянуто уДодатку Б.
Вправа 2-1. Напишіть програму для визначення амплітуд змінних char, short, int і long, як зі знаком, singned, так і беззнакових, unsigned, шляхом виводу відповідних значень з файлів заголовка і шляхом безпосереднього обчислення. Важче, якщо ви обчислите їх. Визначте діапазон різноманітних типів з рухомою точкою.