我希望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