我写 int 是 16 位的:
u_int8_t = unsigned char
u_int16_t = unsigned int
u_int32_t = unsigned long int
u_int64_t = unsigned long long int
int8_t = char
int16_t = int
int32_t = long int
int64_t = long long int
问:“那么 int_fast8_t 是什么意思?int_fastN_t?int_least8_t?”
正如 dan04 在他的回答中所说:
假设您有一个用于 36 位系统的 C 编译器,具有char
= 9 位、short
= 18 位、int
= 36 位和long
= 72 位。然后
int8_t
不存在,因为没有办法满足只有8 个值位且没有填充的约束。
int_least8_t
是一个 typedef char
。不是short
or int
,因为标准要求具有至少 8 位的最小类型。
int_fast8_t
可以是任何东西。int
如果“本机”大小被认为是“快速”,它可能是一个 typedef 。
如果您在Linux
大多数情况下,这些都定义在/usr/include/linux/coda.h
. 例如
#ifndef __BIT_TYPES_DEFINED__
#define __BIT_TYPES_DEFINED__
typedef signed char int8_t;
typedef unsigned char u_int8_t;
typedef short int16_t;
typedef unsigned short u_int16_t;
typedef int int32_t;
typedef unsigned int u_int32_t;
#endif
和
#if defined(DJGPP) || defined(__CYGWIN32__)
#ifdef KERNEL
typedef unsigned long u_long;
typedef unsigned int u_int;
typedef unsigned short u_short;
typedef u_long ino_t;
typedef u_long dev_t;
typedef void * caddr_t;
#ifdef DOS
typedef unsigned __int64 u_quad_t;
#else
typedef unsigned long long u_quad_t;
#endif