gpt4 book ai didi

c++ - 为什么不同操作系统的 sizeof(int) 不同?

转载 作者:太空狗 更新时间:2023-10-29 20:05:18 24 4
gpt4 key购买 nike

我想知道为什么 int 的大小取决于在 C 和 C++ 中使用的操作系统。如果指针的大小变化没关系,但为什么整数的大小。如果 16 位操作系统 sizeof(int) = 2 字节,对于 32 位 sizeof(int) = 4 字节。为什么会这样?

谢谢。

最佳答案

Why so?

历史原因。

在 ANSI C 标准和 size_t 于 1989 年出现之前,int 是用于索引数组的类型。 mallocint 作为参数,strlen 返回一个。因此 int 必须足够大以索引任何数组,但又必须足够小以不会造成太多开销。对于文件偏移量,通常将较大的类型(例如 long)typedef 转换为 off_t

关于PDP-11如果 C 在 70 年代初期首次实现,int 与处理器寄存器一样大:16 位。在较大的机器上,例如 VAX , 它被扩展到 32 位以允许更大的数组。

该公约已基本被放弃; C 和 C++ 标准使用 size_tssize_t 来表示数组的索引和长度。在 64 位平台上,通常 int 仍然是 32 位宽,而 size_t 是 64 位。 (不过,许多较旧的 API,例如 CBLAS 仍然使用 int 作为索引。)

关于c++ - 为什么不同操作系统的 sizeof(int) 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14256695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com