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

C++ 为什么0022FF08+;sizeof(int)=0022FF0C而不是0022FF0A?,c++,c,hex,codeblocks,C++,C,Hex,Codeblocks,char递增1字节int是2字节增量浮点是4字节增量double是8字节增量。为什么int在这里增加4字节 int是32位,所以float也是32位。这里,double是64位 在许多16位系统上,int是16位。C的int的目的是为它编译的系统提供最自然的大小。不要求各系统的int大小相同。试试这个: int i; ... printf("%d",sizeof(i)); 你得到了什么?很可能是4。为什么?因为你的CPU很可能是32位的。在旧的CPU上,2字节的int是真的 永远不要假设变量

char
递增1字节
int
是2字节增量<代码>浮点是4字节增量
double
是8字节增量。为什么int在这里增加4字节


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

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

试试这个:

int i;
...
printf("%d",sizeof(i));
你得到了什么?很可能是4。为什么?因为你的CPU很可能是32位的。在旧的CPU上,2字节的int是真的


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

谁说需要2个字节的
int
?在你的系统(和大多数系统)上,它是4。你的前提是错误的。问题已解决。请将代码作为文本插入。@gmanickg所以,int和float增量是4?编辑器有什么问题?在中附加屏幕截图是不好的做法,因为屏幕截图是不可搜索和不可编辑的……在当今使用的大多数架构上!这在几十年前并不明显。也许他只是从一本过时的书中学到了什么…@ppeterka是的,我在读一本晚年的书。您已经指出::-)