如何在32位和64位計算機中將int數據類型的大小限制爲4個字節而與編譯器類型無關? 我必須使用stdint.h嗎?限制int數據類型的大小
-11
A
回答
10
一般來說,你不能,除非你編寫自己的編譯器。
int
的大小是實現定義的,這意味着每個編譯器都會確定它的大小。
它是通常是 4字節/ 32位,但這並不能保證。 (字節甚至不能保證是正好8位,但你不可能遇到一個系統,他們不會)
你可以做的是確保你的代碼將無法編譯,如果編譯器使用大小你不喜歡:
#include <limits.h>
#if INT_MAX != 0x7FFFFFFF
#error "This code requires 32-bit int"
#endif
既然你問起int
,這就是答案。如果你的意思是你想要一個32位的整數類型,那麼你可以使用int32_t
的類型,在<stdint.h>
或uint32_t
中定義,如果你需要一個無符號類型的話。沒有32位整數類型或32位類型不符合某些要求的實現將不會定義int32_t
和uint32_t
- 但是,您不太可能會遇到這樣的系統。
請記住,int
不僅僅意味着「整數」;類型int
是幾種整數類型之一。
5
你不能強制編譯器改變它用於int
的位數。如果您需要使用32位整數類型捕獲積分數據,請使用int32_t
。
2
您無法控制編譯器如何管理其本機數據類型。但是你可以選擇你決定如何使用它們。例如,編譯32位時,使用int32_t
(總是32位)。編譯爲64位時,請使用int64_t
(總是64位)。如果您需要使用一種可根據編譯32位還是64位而自行調整大小的類型,請使用intptr_t
(分別始終爲32位或64位)。所以是的,如果整數類型的位數對您來說很重要,您應該使用stdint.h
中定義的類型。
相關問題
- 1. MySQL數據類型「int」超出限制
- 2. SQL 2005中XML數據類型的大小限制
- 3. python - 設置數據類型的大小限制
- 4. ApplicationData支持的數據類型和大小限制
- 5. PostgreSQL中JSON數據類型的大小限制
- 6. PHAdjustment數據大小限制
- 7. 限制數據庫大小
- 8. Json數據大小限制
- 9. 如何解決數據類型大小限制?
- 10. PHPMailer附件類型和大小限制
- 11. sqlite中varchar數據類型的最大大小限制是多少?
- 12. C++增加int大小限制
- 13. Protege數據類型限制
- 14. 限制數據類型
- 15. GHC的Int類型的位大小
- 16. Grails的限制數據庫列大小
- 17. PHP的mysql_query數據大小限制?
- 18. 向int數據類型賦值很大
- 19. 如何根據文件類型限制文件上傳大小限制.htaccess
- 20. 數據庫數據類型大小
- 21. 限制數組的大小?
- 22. Dynamodb數字數據類型的大小
- 23. 數據庫列INT限制
- 24. 兩個數字相乘而不跨越數據類型大小限制?
- 25. iphone json數據大小限制
- 26. apache2響應大小限制 - json數據
- 27. android intents行內數據大小限制
- 28. MySQL轉儲限制? MySQL的整體數據庫大小限制?
- 29. LDAP限制大小限制
- 30. 限制泛型集合的大小?
選擇*一種*語言。 C和C++不是一回事。 –
在這裏,我們期望在詢問之前有一定的程度和_research_。 – edmz
查看[this](http://en.cppreference.com/w/c/types/整數)或[this](http://en.cppreference.com/w/cpp/types/整數) – NathanOliver