gpt4 book ai didi

c++ - Windows下编译的QT app计算错误

转载 作者:行者123 更新时间:2023-11-27 23:28:23 25 4
gpt4 key购买 nike

我使用 QT 和 C++ 构建了我的第一个软件,它在 Ubuntu 11.04 和 Mac OS X 上编译时运行完美。当我在 Windows 上编译时,我的 GUI 中出现奇怪的输出。我已将问题追踪到计算油漆坐标时出错。这是有问题的计算:

long x = ((pos-from) *width)/range ;

qDebug() << ***************;
qDebug() << "pos" <<"\t" << pos;
qDebug() << "from" <<"\t" << from;
qDebug() << "width" <<"\t" << width;
qDebug() << "range" <<"\t" << range;
qDebug() << "x" <<"\t" << x;
qDebug() << "***************";

以及 Ubuntu 的输出:

        *************** 
pos 2500000
from 1
width 1005
range 4411537
x 569
***************

Windows 的输出:

        *************** 
pos 2500000
from 1
width 1574
range 4411537
x -81
***************

有人知道为什么我可能会得到不同的 x 值吗?

干杯。

最佳答案

如果您使用 gcc 或类似的 (mingw) 编译器,long 类型在 32 位平台上是 32 位,在 64 位平台上是 64 位。可能您的非 Windows“编译”是在 64 位平台上。 VC++ 始终将 long 视为 32 位。您可以尝试使用 long long int__int64(较旧的 VC++)(您只需要 pos、width 或 range 变量之一是该类型,以便其他变量被向上转换).

关于c++ - Windows下编译的QT app计算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7661155/

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