私は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
Q: 「では、int_fast8_t とはどういう意味ですか? int_fastN_t? int_least8_t?」
dan04 が彼の回答で述べているように:
char
= 9 ビット、short
= 18 ビット、int
= 36 ビット、およびlong
= 72 ビットの 36 ビット システム用の C コンパイラがあるとします。それで
int8_t
パディングなしで正確に8 ビットの値を持つという制約を満たす方法がないため、存在しません。
int_least8_t
の typedef ですchar
。short
またはではありません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