Вы вводите в заблуждение количество байтов, необходимых для представления некоторого значения, и количество байтов, необходимых для представления , размер. Или, как @Mat помещает это в комментарий, вы вводите в заблуждение тип и блок. sizeof(T)
сообщает, сколько байтов (char
s) используется значение типа T
. Однако, поскольку некоторые типы могут быть довольно большими, занимая тысячи или даже миллионы байтов (считайте большие массивы), это значение необходимо сохранить с использованием интегрального типа, который сам занимает несколько байтов (size_t
).
В качестве аналогии выпишите число 10^100 (гипотетически), а затем подсчитайте, сколько десятичных цифр это число имеет. Напишите последний номер (подсказка: 100). 100 сам берет несколько десятичных цифр для записи, но это не влияет на количество цифр 10^100.
Вам нужно объяснить основные причины этого вопроса лучше. Почему на Земле вы ожидаете, что 'sizeof (size_t)' будет 1 ??? Это совершенно непонятно из того, что вы заявили в своем вопросе. 'sizeof' измеряет размеры в темах' sizeof (char) ', поэтому' sizeof (char) 'действительно всегда 1. Но почему вы ожидаете, что sizeof (size_t)' будет 1? – AnT
Ваш вопрос не имеет смысла. Размер переменной не коррелирует со значением в нем. То, что вы спрашиваете, равносильно тому, чтобы спросить, почему умножение числа на любой 'int' не всегда эквивалентно умножению этого числа на 4. –
На самом деле это отличный вопрос, чтобы различать понятия числового значения и размер типа, используемого для представления этого численного значения. – wilsonmichaelpatrick