【发布时间】:2010-11-03 21:23:27
【问题描述】:
我知道 C++ 标准明确保证只有 char、signed char 和 unsigned char 的大小。它还保证short 至少和char 一样大,int 和short 一样大等等。但是没有明确保证sizeof(int) 的绝对值。这是我脑海中的信息,我快乐地生活在它身上。然而,前段时间,我在 SO(找不到)中看到一条评论,在 C 中 long 保证至少为 4 个字节,并且该要求由 C++“继承”。是这样吗?如果是这样,我们对 C++ 中算术类型的大小还有哪些其他隐含保证?请注意,我对这个问题中跨不同平台的实际保证绝对不感兴趣,只是理论保证。
【问题讨论】:
-
"在网上某处,有人说了什么,我读到了,但现在找不到了,我也不确定它到底是什么,我忘记了它是什么事实基于 (if 它是基于任何) 以及它的推理是什么。但是,请你对它的推理提出异议并确认或否认它吗?里面藏着一个埃里温广播电台的笑话,但现在我已经刺了它 5 分钟,它很害怕,不会从它的藏身之处出来。
:) -
@sbi:哦,拜托,你在夸大其词:)。顺便说一句,我 am 来自埃里温 :)
-
在 C 中,绝对不能保证
long至少有 4 个字节宽。这当然也适用于 C++。但是,long总是sizeof long字节。 -
@eq-: 不能保证
long必须至少为 4 字节宽,但它确实暗示它必须根据最小范围至少为 32 位宽给。这几乎总是意味着 4 个字节,因为在大多数(但不是全部!)架构上一个字节是 8 位。 -
@In silico:是的,我很迂腐。然而,如今 long 绝不意味着 [原文如此] 4 字节 - 在 64 位 *NIX 操作系统中拥有 64 位长度是很常见的(可以说事实上)。
标签: c++ c sizeof primitive-types