首页 > 后端开发 > C++ > 正文

C 中的'long”保证至少有 32 位吗?

Barbara Streisand
发布: 2024-10-26 17:39:30
原创
977 人浏览过

Is `long` Guaranteed to Have at Least 32 Bits in C  ?

long 保证有 32 位吗?

尽管基于 C 标准的常见假设,问题是 long 是否保证有至少 32 位。标准将基本整数类型分类为:

sizeof(char) ≤ sizeof(short int) ≤ sizeof(int) ≤ sizeof(long int)
登录后复制

但是,许多人认为基于此层次结构,long 必须具有 32 位。然而,该标准明确指出,一个字节中的位数是实现定义的。

Alf P. Steinbach 的声明

尽管这看似矛盾,但 Alf P. Steinbach 的声明

Steinbach 断言 long 保证为 32 位。他的这一主张基于 long 可以容纳的值范围(LONG_MIN 到 LONG_MAX)的隐式限制。
LONG_MIN ≤ -2^31 + 1
LONG_MAX ≥ 2^31 - 1
登录后复制

C 标准引用了 C 标准 (18.3.2),其中定义了:

与 32 位表示的连接

  1. 虽然这建立了一个 long 范围,但它并没有明确保证 32 位。但是,有两种可能性:
  2. 二进制补码表示:
  3. 如果负数以二进制补码表示,则存储 LONG_MIN 或 LONG_MAX 需要 32 位。
  4. 显式符号位:

如果负数使用符号位,则总存储空间仍需要 32 位。

结论

虽然 C 标准没有明确要求 long 具有 32 位,但最小范围要求(LONG_MIN 到 LONG_MAX)隐含地要求它。这是因为表示这些值需要 32 位存储或具有等效值容量的特定于实现的机制。因此,可以得出结论,C保证long至少有32位。

以上是C 中的'long”保证至少有 32 位吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!