Заголовочный файл inttypes.h и его типы данных
#include <stdio.h>
#include <inttypes.h>
int main()
{
int32_t i_32 = 2147483647;
int_least32_t i_least32 = 2147483647;
int_fast32_t i_fast_32 = 2147483647;
printf("%" PRId32 "\n", i_32);
printf("%" PRId32 "\n", i_least32);
printf("%" PRId32 "\n", i_fast_32);
return 0;
}
Можете пожалуйста объяснить в чем разница между данными типами ?
Ответы (1 шт):
int_least32_t это такой тип, который может вместить 32 битное целое с знакомым, но при этом может быть больше 32 бит. К примеру, может использоваться 64-битный int. Или 36 битный (вроде есть такие процессоры).
i_fast_32 аналогично. Вот только компилятор может использовать такой тип, что бы вычисления с ним были максимально быстрые.
Зачем такие типы нужны? Для более явного выражения своих целей. Вполне может быть процессор, который над 80-битными числами считает супер быстро, а остальные типы - за счёт каста (и потери производительности). Используя первый тип мы явно говорим компилятору - нужно что то минимум 32-битное.
В этом всем мне очень нравится то, что обычный int не имеет фиксированного размер ни в байтах, ни в битах. а также стандарт никак не называет количества бит в байте. Как то так...