Вы когда-нибудь замечали, что стандарт C довольно сомнителен относительно размера целых чисел? Этот факт приводит в замешательство инженеров драйверов устройств и тех, кто работает над протоколами связи, поскольку они считают, что язык должен четко определять размер объектов.
C говорит, что int
- это естественный размер для архитектуры реализации. Это означает, что он будет обрабатываться по крайней мере так же эффективно, как и любой другой размер. Возьмем архитектуру x86: short
(16-разрядное целое число), используемое в 32-разрядной программе, содержит инструкции, выполняющие дополнительную модификацию «переопределения размера». Таким образом, код имеет больше байтов, хотя обычно без потери производительности. Если только дополнительные байты не вызывают переполнение строки кэша ...
Сгенерированный x86-код для счетчика char
обычно включает маскирование после приращения, чтобы гарантировать, что оно останется 8 битами. Может показаться, что использование переменной меньшего размера будет меньше и труднее, но это не относится к x86 и некоторым другим распространенным процессорам.