限制 int 数据类型的大小

Restrict size of int data type

本文关键字:数据类型 int 限制      更新时间:2023-10-16

无论编译器类型如何,如何将 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_tuint32_t- 但同样,您不太可能遇到这样的系统。

请记住,int不仅仅意味着"整数";int类型是几种整数类型之一。

您不能强制编译器更改它用于int的位数。如果需要使用 32 位整型捕获整型数据,请使用int32_t

您无法控制编译器如何管理其本机数据类型。 但是您可以选择决定如何使用它们。 例如,编译为 32 位时,请使用int32_t(始终为 32 位)。 编译为 64 位时,请使用int64_t(始终为 64 位)。 如果需要使用可以根据编译为 32 位还是 64 位而调整自身大小的单个类型,请使用intptr_t(分别始终为 32 位或 64 位)。 所以是的,如果整数类型中的位数对您很重要,您应该使用stdint.h中定义的类型。