1

重複の可能性:
int8_t、int_least8_t、int_fast8_t の違いは?

私はかなり混乱しています。だと思います...(間違っていたら訂正してください)

u_int8_t = unsigned short ?
u_int16_t = unsigned int ?
u_int32_t = unsigned long ?
u_int64_t = unsigned long long ?

int8_t = short ?
int16_t = int ?
int32_t = long ?
int64_t = long long ?

じゃあどういうint_fast8_t意味?int_fastN_t? int_least8_t?

4

2 に答える 2

2

私は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 ですcharshortまたはではありません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
于 2012-12-08T14:06:53.300 に答える
2

これらはすべて C99 標準 (セクション 7.18) で指定されています。

型は、ビット幅 (8、16 など) を表す[u]intN_tジェネリック型 (ISO C 標準)です。shorts/ints/longs/etc は最小範囲 (ビット幅ではない) を持つように定義されており、2 の補数ではない可能性がNあるため、8 ビットは必ずしもshortorではありません。char

これらの新しい型、より一般的な型 (1 の補数または符号/大きさ) のエンコーディングに関係なく、2 の補数です ( C での負の数の表現?およびSCHAR_MIN が C99 で -127 として定義されている理由を参照してください)。

fastそしてleast、まさにそのように聞こえるものであり、高速最小幅タイプと少なくとも指定された幅のタイプです。

この規格では、必須のタイプとオプションのタイプについても詳しく説明しています。

于 2012-12-08T14:09:54.063 に答える