Що таке size_t в мові C?

Я заплутався з величиною size_t в мові С. Знаю, що вона повертається оператором sizeof. Але що саме це таке? Тип даних?

Припустимо, у мене є цикл for:

for(i = 0; i < some_size; i++)

Чи потрібно використовувати int i; чи ize_t i;?

Рішення

З Вікіпедії:

Згідно зі стандартом ISO C 1999 року (C99), size_t є цілим беззнаковим числом типу не менше 16 біт (див. розділи 7.17 та 7.18.3).

size_t - це беззнаковий тип даних визначений декількома стандартами мови C/C++, наприклад, стандартом C99 ISO/IEC 9899, який визначений у файлі stddef.h.1 Він може бути бути додатково імпортований шляхом включення stdlib.h, оскільки цей файл внутрішньо підпорядкований включає stddef.h. Тип stddef.h Цей тип використовується для представлення розміру об'єкту. Бібліотечні функції що отримують або повертають розміри, очікують, що вони щоб вони були типу або мали тип повернення типу size_t. Далі, найбільш часто використовуваний компіляторний оператор sizeof повинен обчислювати константне значення константне значення, яке є сумісне з size_t`.

Як наслідок, size_t є типом, що гарантовано вміщує будь-який індекс масиву.

Коментарі (9)

size_t є беззнаковим типом. Отже, він не може представляти від'ємні значення (

Коментарі (17)

На man-сторінці types.h сказано:

size_t повинен бути беззнаковим цілим типом

Коментарі (0)