C99 или позже
Использование <stdint.h>
.
Если ваша реализация поддерживает 32-разрядные целые числа, дополняющие 2, то она должна определять int32_t
.
Если нет, то следующим лучшим вариантом будет int_least32_t
, который является целочисленным типом, поддерживаемым реализацией, который составляет не менее 32 бит, независимо от представления (дополнение двух, дополнение одного и т. Д.).
Существует также int_fast32_t
, представляющий собой целочисленный тип шириной не менее 32 бит, выбранный с целью обеспечения максимально быстрых операций для этого размера.
ANSI C
Вы можете использовать long
, который гарантированно будет иметь ширину не менее 32 бит в результате требований минимального диапазона, определенных стандартом.
Если вы предпочитаете использовать наименьший целочисленный тип для размещения 32-разрядного числа, то вы можете использовать операторы препроцессора, подобные следующим, с макросами, определенными в <limits.h>
:
#define TARGET_MAX 2147483647L
#if SCHAR_MAX >= TARGET_MAX
typedef signed char int32;
#elif SHORT_MAX >= TARGET_MAX
typedef short int32;
#elif INT_MAX >= TARGET_MAX
typedef int int32;
#else
typedef long int32;
#endif
#undef TARGET_MAX