简单C数据类型
可能重复:简单C数据类型,c,types,primitive-types,C,Types,Primitive Types,可能重复: 我很困惑。我想。。。(如果我错了,请纠正我) 那么int\u fast8\t是什么意思内部快捷键int至少8\u t?I写入,其中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 i
我很困惑。我想。。。(如果我错了,请纠正我)
那么
int\u fast8\t
是什么意思<代码>内部快捷键int至少8\u t
?I写入,其中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位。然后
不存在,因为无法满足正好有8个值位且没有填充的约束int8\u t
是int至少是8\t
的类型定义。不是char
或short
,因为标准要求最小的类型至少有8个字符 点点滴滴int
可以是任何东西。如果“本机”大小被认为是“快速”的,则可能是int\u fast8\t
的typedefint
如果您使用的是
Linux
,那么大多数都是在/usr/include/Linux/coda.h
中定义的。e、 g
#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
及
I写入,其中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位。然后
不存在,因为无法满足正好有8个值位且没有填充的约束int8\u t
是int至少是8\t
的类型定义。不是char
或short
,因为标准要求最小的类型至少有8个字符 点点滴滴int
可以是任何东西。如果“本机”大小被认为是“快速”的,则可能是int\u fast8\t
的typedefint
如果您使用的是
Linux
,那么大多数都是在/usr/include/Linux/coda.h
中定义的。e、 g
#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
及
这些都在C99标准(第7.18节)中规定
[u]intN\t
类型是通用类型(在ISO C标准中),其中N
表示位宽度(8、16等)。8位不一定是short
或char
,因为short/ints/longs/etc被定义为具有最小范围(而不是比特宽度),并且不可能是2的补码
这些较新的类型是二的补码,而不考虑更常见类型的编码,这些类型可能是一的补码或符号/幅度(参见和)
fast
和least
正是它们听起来的样子,fast最小宽度类型和至少给定宽度的类型
本标准还详细说明了哪些类型是必需的,哪些是可选的。这些都在C99标准(第7.18节)中规定
[u]intN\t
类型是通用类型(在ISO C标准中),其中N
表示位宽度(8、16等)。8位不一定是short
或char
,因为short/ints/longs/etc被定义为具有最小范围(而不是比特宽度),并且不可能是2的补码
这些较新的类型是二的补码,而不考虑更常见类型的编码,这些类型可能是一的补码或符号/幅度(参见和)
fast
和least
正是它们听起来的样子,fast最小宽度类型和至少给定宽度的类型
该标准还详细说明了哪些类型是必需的,哪些是可选的。检查:检查:在Linux系统中,我没有找到
int\u fastN\t
。为什么会这样?我使用/usr/include$grep'int_fastN_t'*-R
@Grijesh进行搜索,没有blahN_t
类型,N
在标准中是8、16等的占位符。搜索int\u fast8\u t
——它们应该在一起(并从inttypes.h
引用)。是的,int\u fast8\u t
存在,但在stdint.h
中……在我的系统声明中位于coda.h
!-谢谢paxdiablo:)投票支持你对不起,我的坏,stdint
保存类型,inttypes
保存printf/scanf
的格式说明符。我看到了。但是我得到了我的答案。。谢谢:)在Linux系统中,我没有找到intfastn\t
。为什么会这样?我使用/usr/include$grep'int_fastN_t'*-R
@Grijesh进行搜索,没有blahN_t
类型,N
在标准中是8、16等的占位符。搜索int\u fast8\u t
——它们应该在一起(并从inttypes.h
引用)。是的,int\u fast8\u t
存在,但在stdint.h
中……在我的系统声明中位于coda.h
!-谢谢paxdiablo:)投票支持你对不起,我的坏,stdint
保存类型,inttypes
保存printf/scanf
的格式说明符。我看到了。但我得到了我的答案。谢谢:)