gpt4 book ai didi

c++ - Qt 调试器中的 reinterpret_cast 错误值

转载 作者:太空宇宙 更新时间:2023-11-04 12:40:45 25 4
gpt4 key购买 nike

我将 QtCreator 4.8.0 与 mingw 4.9.2、GDB 7.8 和 Qt 5.6.3 一起使用,如果在调试器中运行,以下代码行会产生错误的值:

T* temp = reinterpret_cast<T*>(anArray.data());

TfloatanArray是一个QByteArray,其值为[40 A0 00 00] 40 A0 00 00 转换为 float 实际上应该是 5,但由于某些奇怪的原因,它被评估为大约 -10^38,但是只有在 Debug模式下运行。当我在 QtCreator 调试器之外启动程序时,该值被正确计算为 5。编辑:在另一台机器上,完全相同的代码和 Qt、mingw 的组合......工作得很好。

我已经尝试重建整个项目,但它没有改变任何东西。有没有人知道,这是怎么发生的?更重要的是如何修复它?

最佳答案

好吧,我不使用 QtDebugger,但 windbg 似乎可以正确解释它

C:\>cdb -c ".formats 40a00000;q" cdb | grep -i Float
Float: low 5 high 0

C:\>

关于您的评论 Maximum Float可能是 ~-3*10^38 所以 -10^39 不能用 32 位 float 表示

C:\>cdb -c ".formats ff7fffff;q" cdb | grep Float
Float: low -3.40282e+038 high 0

C:\>grep -inhr (\-FLT_MAX "c:\Program Files\Windows Kits\10\Include\10.0.16299.0\*"
1117: return -3.402823466e+38f; // Smallest float value (-FLT_MAX)

C:\>

关于c++ - Qt 调试器中的 reinterpret_cast 错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54310214/

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