gpt4 book ai didi

c - 64位计算机中INT的最大值

转载 作者:太空宇宙 更新时间:2023-11-04 05:02:34 24 4
gpt4 key购买 nike

我的系统是 Linux x86_64。 int 数据类型 (INT_MAX) 的最大值显示为 2147483647(使用 header )而不是 32767(16 位 int 的情况)。为什么?

最佳答案

没有类型 INT除非你自己定义。该类型称为 int . C 区分大小写。

C 标准说 int 类型的对象“具有执行环境架构建议的自然大小”。对于 64 位系统,这确实意味着 INT_MAX应该是 263-1 -- 但这不是硬性要求。

要求是int必须至少为 16 位宽,并且必须至少与 short 一样宽宽度不超过 long . (POSIX 要求 int 至少为 32 位。)

为系统支持的所有大小设置整数类型很有用。特别是,在大多数现代系统上,预定义大小为 8、16、32 和 64 位的整数类型非常有用。

char通常是 8 位。如果我们制作 int 64 位,然后 short是 16 位,我们没有 32 位类型,或者 short是 32 位,我们没有 16 位类型。 (我也曾在没有 16 位 32 位整数类型的系统上工作过。)

编译器可以通过定义自己的扩展整数类型来解决这个问题,但编译器通常不会这样做。

在实践中,制作int 64 位系统上的 32 位不是真正的问题。对 32 位整数的运算是高效的,如果你想要一个 64 位整数,你可以使用 long , long long , 或 int64_t , 在 <stdint.h> 中定义. (实际上 64 位 Windows 将 long 定义为 32 位,但 long long 始终至少为 64 位。)

底线:C 标准在如何 int 方面允许相当大的灵 active 。被定义,编译器实现者以他们认为对用户最方便的方式定义它——或者更常见的是,以平台的 ABI 要求的方式定义它。 .与为 32 位系统编写的代码的兼容性通常是主要考虑因素。

关于c - 64位计算机中INT的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28414581/

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