我希望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. stdint.h中的C++標準類型大小
- 3. C99的固定寬度整數類型
- 4. 更精確的數字數據類型比雙精度?
- 5. 在C++中的精確度
- 6. 混合標準和精確寬度類型
- 7. 失去大整數的精確度(pow?)
- 8. 記事本++和stdint.h類型
- 9. 在barplot中精確控制條寬度
- 10. 如何將雙精度類型更改爲unix中的整數類型?
- 11. C中的整數類型
- 12. 確定C中雙精度型變量的長度
- 13. 獲得準確的精度數十進制c後的精度#
- 14. 使用精確大小的整數C++
- 15. 如果數據類型是整型或雙精度值,則C++返回true/false
- 16. 如何精確測量弦的寬度?
- 17. 不是C#中15位數字的雙精度類型?
- 18. 爲什麼整數「3」 MATLAB的單精度浮點類型?
- 19. stdint.h中的無符號整數類型對可存儲內容沒有限制?
- 20. R中的平均精確度精度
- 21. C中的精確數字?
- 22. 真正的數據類型精度
- 23. 數精度C++
- 24. GCC C++ pow精確度
- 25. 如何確定Decimal類型的精度和尺度?
- 26. 在Visual C double類型的數值精度++ 2008 Express的調試
- 27. Mono上C#小數點類型的精度是不同的?
- 28. add_image_size具有精確的寬度+自動高度,但調整後的寬度限制爲最大值
- 29. SQL Server中固定寬度數據類型的等寬可變寬度
- 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