我看到代码使用sizeof(int)
.
我想知道在所有架构上 是否sizeof(float)
总是等于?sizeof(int)
float *pointer2Float = (float *) USER_DEFINED_MALLOC (...,..., sizeof(int))
注意:USER_DEFINED_MALLOC
我认为这是传统 malloc 的包装器。
谢谢
问候
不,有 16-bitint
和 32-bit的实现(主要是嵌入式系统) float
。
当然,根据标准,尺寸允许有很大的不同。
ALL 类型(除了char
,signed char
和unsigned char
1)的大小是实现定义的。因此,不能保证在所有平台上都sizeof(float)
等于。sizeof(int)
1. 标准定义其大小char
及其所有变体为 1 字节。但是, 1 字节中的位数是实现定义的!
不,sizeof (int)
值sizeof (float)
是实现定义的,不保证相同。
这是两个值不同的系统示例:
在 Cray MPP 系统上:
sizeof (int) is 8
sizeof (float) is 4
看这里:
《Cray C/C++ 参考手册》,表 3.《9.1.2.2 类型》中的 Cray Research 系统数据类型映射
http://docs.cray.com/books/004-2179-003/004-2179-003-manual.pdf
此外,大多数 8 位嵌入式系统int
的 16 位宽sizeof (int)
为 2,而浮点遵循 IEEE-754,32float
位宽sizeof (float)
为 4。
不会。在 C 和 C++ 中,数据类型是特定于平台的。一般来说,这将意味着:
但是对于其他系统,一般规范是 int 具有系统架构(一个“单词”)建议的自然大小,并且四种整数类型 char、short、int 和 long 必须至少与前面的一样大它,char 总是一个字节的大小。这同样适用于浮点类型 float、double 和 long double,其中每一个都必须提供至少与前一个一样多的精度。
(取自数据类型)
在许多平台上,float 和 int 通常都是 32 位的,但情况并非总是如此,也不是实际规范的一部分。
绝对不能保证sizeof (float)
等于sizeof (int)
,我认为以上是编码错误。
它应该用于或。 sizeof *ptrToFloat
_sizeof (int)
sizeof (float)
如果您正在编写一个数据类型大小非常重要的多平台,您可以创建一个头文件,例如:
#define INT sizeof(int)
#define FLOAT sizeof(float)
.
.
.
这是欺骗拱门的把戏。