Ответ 1
На вашей платформе все имена для одного и того же базового типа данных. На других платформах это не так.
int64_t
требуется ТОЧНО 64 бита. На архитектурах с (например) 9-битным байтом он вообще не будет доступен.
int_least64_t
- наименьший тип данных с не менее чем 64 битами. Если int64_t
доступен, он будет использоваться. Но (например) с 9-разрядным байт-машиной это может быть 72 бита.
int_fast64_t
- это тип данных с не менее чем 64 битами и лучшая арифметическая производительность. Он там в основном для согласованности с int_fast8_t
и int_fast16_t
, который на многих машинах будет 32 бита, а не 8 или 16. В течение нескольких лет может существовать архитектура, где 128-битная математика быстрее, чем 64-разрядная, но я не Думаю, что кто-то существует сегодня.
Если вы портируете алгоритм, вы, вероятно, захотите использовать int_fast32_t
, так как он сохранит любое значение, которое может обрабатывать ваш старый 32-разрядный код, но будет быстрее, чем 64-битный. Если вы конвертируете указатели в целые числа (почему?), Используйте intptr_t
.