有没有办法在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
C和C ++的大多数常见实现将使用32位float
类型。如果你确实需要在任何情况下捕获任何平台,那么可以使用以下方法在程序的早期抛出错误:
#include <limits.h>
if (sizeof(float) * CHAR_BIT != 32)
// error code here
不幸的是,我不知道在编译时检测它的方式,我早期的答案是有缺陷的。
没有这样大小的浮点类型,但是您可以始终静态声明大小为32位。甚至可能像全局字符数组一样简单:
#include <climits>
char static_assert_float32[1 - (2 * ((sizeof(float) * CHAR_BIT) != 32))];
如果float
不是32位,则通过声明负数大小的数组将无法编译。
相似问题