На вашей платформе они являются именами одного и того же базового типа данных.На других платформах это не так.
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
.