为什么 int 类型会根据处理器架构改变大小,而其他类型则不会?

问题描述 投票:0回答:1

我正在研究编码约定,并发现一条建议不要使用 int 类型的规则。我相信这源于 int 类型的特性,它根据处理器的位架构动态改变其大小。

我的问题是,为什么其他数据类型被设计为具有固定大小,而 int 类型被设计为根据处理器的位架构而变化?如果这种方法有优点,为什么其他数据类型不设计为动态改变其大小呢?

c types integer
1个回答
0
投票

所有

signed char
short
int
long
long long
及其无符号等效项可能会根据目标更改大小(与浮点类型相同)。每个都有一个必须支持的最小要求值范围 (limits.h),但它们可以更大。

他们之所以如此,是有历史原因的。早在黑暗时代,人们还没有弄清楚便携性的含义。一些令人困惑的想法四处流传,比如“如果我总是可以使用

int
,无论系统如何,那么它就是可移植的”。因此他们让类型根据系统而变化。问题是,在编写真正可移植的代码时,您经常需要假设类型的精确值范围或字节大小。因为你不能用
int
和朋友们做到这一点,因为它们与便携式相反。它只是一个从 20 世纪 70 年代继承下来的设计糟糕的类型系统,在大多数专业环境中应该避免使用这些类型。

唯一设计为具有固定尺寸的类型是

stdint.h
中的类型,例如
int8_t
int16_t
等。这些更便携,因为您知道大小和符号格式,并且可以相应地调整程序。

© www.soinside.com 2019 - 2024. All rights reserved.