Это просто означает, что самый большой массив, поддерживаемый платформой, будет индексироваться с помощью size_t
.
. Учитывайте:
int array[1000];
for (uint8_t i; i < 1000; ++i) {}
Это явно неверно, у uint8 нет диапазона для индексировать этот массив. size_t
всегда гарантирует стандарт.
Что касается байтов, то использование sizeof array
дает размер байта. Должен быть гарантированный тип, чтобы иметь возможность представлять результат.
Я думаю, было бы более технически целесообразно использовать ptrdiff_t
для индексации массивов, потому что именно этот тип индекса массива является : *(array+index)
. Но это не так часто, я думаю, это выглядит уродливее, дольше печатать и может сбивать с толку.
Обратите внимание, что стандарт C ++ не дает никаких аналогичных гарантий ни для какого другого типа. Но эта проблема диапазона является несколько теоретической в большинстве практических случаев, так как вы можете быть уверены, что 64-разрядное целое число также может индексировать все, что умещается в памяти. Это более важно для сообщения намерений.