所有体系结构上sizeof(float)总是等于sizeof(int)吗?

elg*_*noh 5 c c++ memory malloc sizeof

我看到代码为float使用分配内存sizeof(int).
我想知道是否sizeof(float)总是等于sizeof(int)所有架构?

float *pointer2Float = (float *) USER_DEFINED_MALLOC (...,..., sizeof(int))
Run Code Online (Sandbox Code Playgroud)

注意:USER_DEFINED_MALLOC我认为这是传统malloc的包装器.

谢谢

问候

Dan*_*her 18

不,有16位int和32位的实现(主要是嵌入式系统)float.

当然,根据标准,尺寸可以大不相同.

  • @elgnoh,我相信对于这些平台上最常见的ABI来说,'sizeof(int)== sizeof(float)`是正确的,但理论上不可能有一个特定的系统,但事实并非如此(例如,`int`很容易就是64位). (2认同)
  • 如果你打赌这些架构上的所有实现都有32位`int`和32位`float`,我认为你输掉赌注的风险非常小.但是不能保证,有人可以使用64位`int`和32位`float`来实现. (2认同)

Naw*_*waz 7

(除ALL类型的大小char,signed charunsigned char1)是实现定义.所以不能保证在所有平台上sizeof(float)相同.sizeof(int)

1.标准将其大小char及其所有变体定义为1字节.然而,数量在1个字节位的是实现定义!