我有一个 32 位长整数数组。一些元素随后将用作 32 位 float 。我想提供一个初始化列表来正确初始化这些浮点值。例如,如果前两个元素用作整数,第三个元素用作 float ,我希望将第三个元素初始化为等于 100.0,我不得不这样做:
long a[3]={10,20,0x42c80000};
这工作正常,但不是很有表现力。
如果我这样做:
long a[3]={10,20,100.0};
编译器会将浮点字面量转换为 0x64。
我没有 C++11 编译器,因此无法使用 union 。
有什么想法吗?
最佳答案
union 不需要 C++11,所以请继续使用它们。但是,如果它们在语义上不属于一起,那么将不同类型的对象/元素混合在一个数据结构中通常不是一个好主意。
这将使您用于操作所述数据结构的代码变得脆弱且容易出错。我建议重新考虑您的语义并了解为什么您需要在同一个数组中同时使用 long 和 float。它们可以存储在单独的数据结构中。此外,float 可以准确地存储所有 long(尽管具有不同的按位表示),那么为什么不直接创建一个 float 数组呢?
关于c++ - 在 C++ 中使用浮点文字初始化整数数组的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39345424/