Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将quint32重新解释为浮动_C++_Casting - Fatal编程技术网

C++ 将quint32重新解释为浮动

C++ 将quint32重新解释为浮动,c++,casting,C++,Casting,所以出乎意料的是(对我来说),在Qt中,不可能将QUOT32重新解释为浮点值 除了工会,还有什么方法可以重新解释变量吗 union { float f; quint32 q; }u; Qt中的QVarinat类呢 QVariant(qlonglong val).toFLoat() 您也可以直接将i的地址强制转换为float*,但这会导致编译器抱怨违反了严格的别名规则。并不是说在中间插入一个空指针会使它变得“更好”,但至少它不会抱怨 它的工作原理与预期一样,666二进制是1010011010

所以出乎意料的是(对我来说),在Qt中,不可能将QUOT32重新解释为浮点值

除了工会,还有什么方法可以重新解释变量吗

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;