Я заглянул внутрь файла заголовка <stdint.h>
моей реализации. Я вижу следующее:
typedef long int int_fast16_t;
typedef long int int_fast32_t;
typedef long int int_fast64_t;
У меня 64-битная система, поэтому long int занимает 64 бита. Почему все три типа данных определены как длинные целые? Я понимаю случай с int_fast64_t, который составляет 64 бита. Но почему 16- и 32-битные типы данных имеют 64-битные? Это какая-то ошибка? Я создал небольшую программу, чтобы проверить, так ли это:
sizeof(int_fast8_t) : 1
sizeof(int_fast16_t) : 8
sizeof(int_fast32_t) : 8
sizeof(int_fast64_t) : 8
Определены ли размеры реализации этих типов данных? Какие особенности или характеристики определяют тип данных как «быстрый»? Скорость загрузки данных из ОЗУ в ЦП? Если int_fast16_t
и int_fast32_t
имеют ширину 8 байт, каковы преимущества в производительности? Действительно ли быстрее получить доступ к 64-битному типу данных в 64-битной системе ?