我希望char,short和int类型的宽度为1,2和4个字节。我已将stdint.h标题包含在我的来源中。这是否保证int8_t,int16_t和int32_t整数类型的宽度是指定的?达到此目的的最佳方法是什么?C中的精确宽度整数类型(stdint.h)
3
A
回答
7
如果这些类型存在,它们具有正确的宽度并且以二进制补码编码。
编辑:你应该能够检查是否有东西存在的类型,如
#ifdef INT32_MAX
...
#endif
,但对所有最终用户架构(PC等),这些类型通常是存在的。
3
在stdint.h
中定义的类型的整体目的是它们具有指定的宽度。所以int8_t
将是8个位宽,int16_t
- 16位宽等
0
1
stdint.h
一些确切的宽度整数类型。这些(来自wikipedia):
Specifier Signing Bits Bytes
int8_t Signed 8 1
uint8_t Unsigned 8 1
int16_t Signed 16 2
uint16_t Unsigned 16 2
int32_t Signed 32 4
uint32_t Unsigned 32 4
int64_t Signed 64 8
uint64_t Unsigned 64 8
,如果你想知道的大小是什么明确的使用它们。 C99要求这些类型具有指定的尺寸。所有其他类型都取决于平台。
其他类型保证是一定的最小宽度,根据limits.h
。但他们同样可以比这更大。这取决于实施。
1
C99的stdint.h实际上并不能保证存在这些类型。引述wikipedia:
这些类型是可选的,除非实现支持类型为8,16,32或64的宽度,则它应它们与相应的N.的typedef到相应类型
然而,如果他们做存在,他们将是正确的宽度。
相关问题
- 1. 在GCC中实现的精确宽度整数类型如何?
- 2. C99的固定宽度整数类型
- 3. 更精确的数字数据类型比双精度?
- 4. 混合标准和精确宽度类型
- 5. 在barplot中精确控制条宽度
- 6. C中的整数类型
- 7. 如果数据类型是整型或双精度值,则C++返回true/false
- 8. 如何精确测量弦的宽度?
- 9. 为什么整数“3” MATLAB的单精度浮点类型?
- 10. R中的平均精确度精度
- 11. C中的精确数字?
- 12. 数精度C++
- 13. Mono上C#小数点类型的精度是不同的?
- 14. 在Visual C double类型的数值精度++ 2008 Express的调试
- 15. 小整数类型长度
- 16. 在C#中的高精度整数数学?
- 17. 如何用std :: ostringstream截断整型类型的宽度?
- 18. Oracle“Number”数据类型精度
- 19. 在java中保留精确到小数位的精确度
- 20. 宽度和精度使用*
- 21. 对于printf的整数参数,零填充宽度和精度是否相同?
- 22. 调整小数精度,.NET
- 23. mongodb整数索引精度
- 24. 更大的整数宽度
- 25. 数值精度 - C#
- 26. 如何转换在c中的sql类型双精度#
- 27. 单精度CUDA带宽和双精度带宽
- 28. C++中的便携式精确双精度时间戳?
- 29. ezplot的线宽和精度
- 30. 可精确表达为浮点数/双精度的整数范围
这是定义的OS /体系结构。对于32位机器,它们应该具有这种尺寸。 – BlackBear 2011-02-04 21:04:34
是的,但我在这里读到很多编译器不支持stdint.h。 – ezpresso 2011-02-04 21:11:16
它有时也可能依赖于编译器(以及正在使用的标志)。你在使用什么操作系统/ CPU /编译器? – 2011-02-04 21:11:32