【问题标题】:Why is 0022FF08 + sizeof(int) = 0022FF0C instead of 0022FF0A? [closed]为什么是 0022FF08 + sizeof(int) = 0022FF0C 而不是 0022FF0A? [关闭]
【发布时间】:2012-10-09 17:39:04
【问题描述】:

char 是 1 字节增量。 int 是 2 字节增量。 float 是 4 字节增量。 double 是 8 字节增量。为什么 int 在这里增加 4 字节

【问题讨论】:

  • 谁说int 需要2 个字节?在您的系统(和大多数)上,它是 4。
  • 你的前提是错误的。问题解决了。
  • 请以文本形式插入代码。
  • @GManNickG 所以,int 和 float 的增量是 4?
  • 编辑器有什么问题吗?在 SO 中附加屏幕截图是一种不好的做法,因为屏幕截图不可搜索且不可编辑。

标签: c++ c hex codeblocks


【解决方案1】:

试试这个:

int i;
...
printf("%d",sizeof(i));

你得到了什么?最有可能 4. 为什么?因为您的 CPU 很可能是 32 位的。 2 字节 int 在较旧的 CPU 上是正确的...

永远不要根据“应该”来假设变量的大小,始终使用 sizeof()!

【讨论】:

    【解决方案2】:

    int 是 32 位,float 也是。这里,double 是 64 位。

    在许多 16 位系统上,int 是 16 位。 C 的int 旨在为其编译的系统最自然的大小。不要求 int 跨系统的大小相同。

    【讨论】:

    • ...在当今使用的大多数架构上!这在几十年前并不明显。也许他只是从一本过时的书中学到的……
    • @ppeterka 是的,我正在读一本老书。你已经指出了。 :-)
    猜你喜欢
    • 1970-01-01
    • 2012-06-14
    • 2011-01-16
    • 2013-09-24
    • 2021-09-26
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多