sizeof(int)总是等于sizeof(void*)

Bil*_*ias 1 c++

可能重复:
sizeof(int)== sizeof(void*)?

我想知道是否保证在32位和64位系统sizeof(int)中总是等于sizeof(void*)(即分别为32位和64位).

另外,我需要知道是否始终保证a long int可以容纳a int和a 的位void*,例如

long int lint = (((int)integer)<<sizeof(int)) | (void*)ptr;
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 7

我想知道是否可以保证在32位和64位系统sizeof(int)中总是等于sizeof(void*)

没有.

我需要知道它是始终保证一个long int可容纳的位intvoid*在一起

不是.快速证明是sizeof(long int) == sizeof(int)许多现代平台上考虑,可能包括你正在使用的平台.

更重要的问题是为什么你认为你"需要知道"这个; 你问这些问题的事实让我担心你的代码很可能......摇摆不定.

  • 举一个第一个"不"的例子:在64位平台上使用gcc`sizeof(int)`是4(而`sizeof(void*)`当然是8). (3认同)