【发布时间】:2011-04-10 00:14:39
【问题描述】:
为什么在使用 C 时 sizeof('x') 返回 4 而在 C++ 中 sizeof('x') 返回 1?
C++ 通常力求成为 C 的超集,那么为什么这两个结果会不同呢?
编辑 只是一些进一步的澄清。这似乎是标准委员会有意采取的举措,我认为如果没有充分的理由,就不会更改“x”的大小。我对原因很感兴趣。
【问题讨论】:
-
没有一个重复解释原因。
-
@deus:这只是一个设计决定。 “c”方式意味着编译器必须对类型提升做出更少的决定(因为每次都会发生“提升”),这可能起到了作用:七十年代早期的机器速度很慢并且内存有限,所以简单的编译器是必须的。
-
在Why are C character literals ints instead of chars 中查看 Malx 和 Johannes Schaub 的答案。
-
“C++ 通常力求成为 C 的超集” 你从哪里读到的?完全错误。一开始,C++ 必须接近 C,以便程序员可以尝试采用它。但是说他们努力使它成为一个超集肯定是错误的。它们是不同的语言,仅此而已。