如何在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