C++ 将quint32重新解释为浮动
所以出乎意料的是(对我来说),在Qt中,不可能将QUOT32重新解释为浮点值 除了工会,还有什么方法可以重新解释变量吗C++ 将quint32重新解释为浮动,c++,casting,C++,Casting,所以出乎意料的是(对我来说),在Qt中,不可能将QUOT32重新解释为浮点值 除了工会,还有什么方法可以重新解释变量吗 union { float f; quint32 q; }u; Qt中的QVarinat类呢 QVariant(qlonglong val).toFLoat() 您也可以直接将i的地址强制转换为float*,但这会导致编译器抱怨违反了严格的别名规则。并不是说在中间插入一个空指针会使它变得“更好”,但至少它不会抱怨 它的工作原理与预期一样,666二进制是1010011010
union
{
float f;
quint32 q;
}u;
Qt中的QVarinat类呢 QVariant(qlonglong val).toFLoat() 您也可以直接将
i
的地址强制转换为float*
,但这会导致编译器抱怨违反了严格的别名规则。并不是说在中间插入一个空指针会使它变得“更好”,但至少它不会抱怨
它的工作原理与预期一样,666二进制是1010011010
,转换后f
是9.33265e-43
,即0000000000000000000000 1010011010
,二进制表示形式相同
确保在进行此类转换时,目标大小不大于源大小。在这种情况下,QuiT32和FLUT都是4字节,但如果目标大于源,则会读取“谁知道什么”,这可能会产生负面后果。QT真的与它无关,它只是普通C++。听起来像是一个有缺陷的假设:<代码> RealTytCaseMyQui32 Var < /C>。
quint32 i = 666;
void * vp = &i;
float f = *(float*)vp;