Qix*_*Qix 7 c++ floating-point size cross-platform consistency
我需要一种跨架构的方法来确保浮点数为4个字节(就像在32位窗口上一样).例如,在我正在创建的结构中,我正在使用__int32而不是int确保一个4字节长的整数值.
我怎么能用漂浮物来做这件事?我知道我可以用一个__int32类型替换值; 但是,当在64位系统上转换为浮点数时,我不会有问题吗?
我需要一种跨架构的方法来确保浮点数为4个字节
int32_t浮点值没有模拟值.
实现您想要的唯一跨平台方法是使用运行时或静态断言来测试它.
#include <cassert>
int main () {
assert(sizeof(float) == 4);
// If control reaches this line, then you've
// ensured that float is 4 bytes.
// rest of your program goes here
}
Run Code Online (Sandbox Code Playgroud)
没有标准的兼容方法,因为浮点数据大小与CPU相关联.的IEEE-754标准(其支持浮点使用据我所知的所有处理器)限定单精度浮点值作为4个字节.
没有标准提及的原因是因为C的编写者不希望将自己绑定到浮点的特定实现,以防标准更改或更新.而且因为CPU无论如何都会确定单精度浮点数和双精度浮点数的大小和实现,因此它不是编译器所关注的.
如果你担心它,你可以使用a static_assert来确保sizeof(float) == 4; 但是,这不是你要碰到的问题,我无法想象.如果它是你应该逐个处理它(这实际上将是一个逐个体系结构的基础.)
| 归档时间: |
|
| 查看次数: |
5480 次 |
| 最近记录: |