为什么0022FF08 + sizeof(int)= 0022FF0C而不是0022FF0A?

时间:2012-10-19 06:33:51

标签: c++ c hex codeblocks

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

Hex Increment Program

Hex Increment Output

2 个答案:

答案 0 :(得分:3)

试试这个:

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

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

永远不要假设基于“应该”的变量大小,总是使用sizeof()!

答案 1 :(得分:0)

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

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