gpt4 book ai didi

C++ 声明独立于平台的 32 位 float

转载 作者:IT老高 更新时间:2023-10-28 22:02:49 30 4
gpt4 key购买 nike

有没有办法在 C++ 中声明 32 位浮点值 - 确保无论平台/编译器如何,它始终是 32 位?

我可以对这样的整数做到这一点:

#include <stdint.h>

uint32_t var; //32 bit unsigned integer
uint64_t var1; //64 bit unsigned integer

有没有办法为花车做类似的事情?据我所知,

float var; //Usually is 32 bit, but NOT GUARANTEED to be 32 bit

是特定于实现的,不一定是 32 位的。(如果我错了,请纠正我)。

我正在使用 qt,所以如果有任何使用它的解决方案,我会接受它 - 我找不到类似 quint16 的 float (qreal 会根据平台更改大小)。

最佳答案

您正在使用 Qt。这是 C++ 特有的,所以我不确定为什么这个问题被标记为 C。

据我所知,在所有支持 Qt 的平台上,输入 float是 32 位 IEEE。

如果有人决定将 Qt 移植到,例如,具有 64 位 float 的 Cray vector 机,无论如何你都不会有 32 位浮点类型(除非你自己在软件中实现它,但我看不出它有什么用处)。

没有<stdfloat.h>/<cstdfloat>对应 <stdint.h>/<cstdint> . C 和 C++ 提供 float , double , 和 long double , 并对它们施加了最低要求,但没有给您一种方法来要求任何特定大小的浮点类型。

您最好的选择可能是在 main 中添加类似的内容,或在程序启动期间保证调用的某些函数中:

assert(CHAR_BIT * sizeof (float) == 32);

也许 CHAR_BIT == 8如果您的代码隐含地依赖于此。

assert 不太可能永远不会开火——如果真的发生了,你就会遇到更大的问题。

您可能需要重新考虑是否真的需要 32 位浮点类型。如果您的代码在 64 位系统上运行 float ,怎么会达不到你的要求呢?

关于C++ 声明独立于平台的 32 位 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18705192/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com