Чому числові типи даних в c мають такий розмір
Кожен програміст, якому доводилося писати на C або C-подібних мовах, напевно стикався з тим, що розмір змінних одного і того ж типу на різних машинах може бути різним. Трохи розібравшись у цьому питанні багато заспокоювалися, дізнавшись, що, дійсно, розмір тих же покажчиків залежить від реалізації компілятора і розрядності машини. Але чому? І чому саме стільки байт займає покажчик в тому чи іншому випадку?
Комп'ютери та компілятори підтримують різні типи для зберігання даних - зокрема, цілих чисел і чисел з плаваючою комою. Кожен окремий тип може відрізнятися від інших, наприклад, способом представлення інформації, що зберігається і обсягом займаної пам'яті.
Мова програмування C підтримує різні типи для зберігання як цілих чисел, так і чисел з плаваючою комою. Символьний тип char. що часто використовується для представлення окремого символу, може також зберігати беззнакові числа. Більш поширений для цих цілей int утворює ціле сімейство типів за рахунок можливих префіксів: short. long і long long - і все різних розмірів. У таблиці нижче вказано, скільки байт займає в пам'яті кожен тип залежно від розрядності системи.
Можна помітити, що розмір залежить від розрядності машини (строго кажучи, ще й від реалізації компілятора). Але чому розміри саме такі? Зверніть увагу: short, «звичайний» int і long long завжди мають постійні розміри в 2, 4 і 8 байт відповідно. Префікс long ж означає, що для зберігання даної змінної потрібно використовувати одне машинне слово - 4 байта на 32-бітної машині і 8 байт на 64-бітної відповідно.