限制 int 数据类型的大小
Restrict size of int data type
无论编译器类型如何,如何将 int 数据类型的大小限制为 4 位和 32 位机器中的 64 个字节? 我必须使用 stdint.h 吗?
一般来说,你不能,除非你编写自己的编译器。
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
类型是几种整数类型之一。
您不能强制编译器更改它用于int
的位数。如果需要使用 32 位整型捕获整型数据,请使用int32_t
。
您无法控制编译器如何管理其本机数据类型。 但是您可以选择决定如何使用它们。 例如,编译为 32 位时,请使用int32_t
(始终为 32 位)。 编译为 64 位时,请使用int64_t
(始终为 64 位)。 如果需要使用可以根据编译为 32 位还是 64 位而调整自身大小的单个类型,请使用intptr_t
(分别始终为 32 位或 64 位)。 所以是的,如果整数类型中的位数对您很重要,您应该使用stdint.h
中定义的类型。
相关文章:
- 如何计算数据类型的范围,例如int
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 什么是在C 中存储结果INT*的最佳数据类型
- 返回int数据类型v/s传递参考
- 如何掩盖对象数组的数据类型字符串到C 中的INT
- 预安装库中的常见数据类型(Int、Char 等)大写
- OpenCL 的 clEnqueueReadBufferRect 适用于 int 但不适用于 double 数据类型
- 数据类型在 CPP 中将 int 转换为双倍
- 为什么没有int或false的数据类型
- 限制 int 数据类型的大小
- 为什么在所有数据类型中,int 取决于操作系统或编译器
- 由INT数据类型(低,高)结构表示的双数据类型
- 当我们给char数据类型赋值为负值时,它为什么表现得像int数据类型
- 数据类型是否"int"定义为类?
- 您能否安全地将 char 数据存储在 int 数据类型中
- C++指针给出数据类型为"int"的错误,但与"char"一起工作正常
- Arduino代码:移动位似乎将数据类型从int更改为long
- C++ - 将 int 拆分为两种较小的数据类型
- "unsigned int"被视为数据类型吗?
- 在 for 循环中使用 int 以外的数据类型作为索引值C++