首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Qt|DWORD与int混搭使用的问题

DWORD类型数据与int类型数据进行比较时,判断条件居然每次都成立,简直是匪夷所思了!

我的代码是这样的:

就是上面这短短的代码,乍眼一看,怎么会出错误呢?其实,这里面的问题确实很大!

思路1

我以为是dwStartTime - dwEndTime计算的值有问题,就进行日志输出。

首先,我将两个数据的差值直接输出了,输出方式:

输出的内容居然是一个很大的值,由此,我就怀疑是不是有一个数值是不是真的特别大?

后来,我就对两个数据分别进行输出,发现,目测差值也不会大于500。

那是什么原因导致每次都进入if循环呢?

思路2

是不是因为采用fabs的原因?

为了验证我的想法,重新修改了下函数

运行程序发现,与使用fabs的效果一致,说明与fabs函数无关。

那就剩下一种可能了,DWORD类型与int比较时出问题了。

思路3

为了验证该想法,将DWORD计算的差值转成int类型,代码如下:

运行程序后发现,果真是这样的,DWORD类型数据与int类型数据在做比较时,确实有问题。

其实,到这里也并不算真正的将问题解决好。

DWORD代表的是unsigned long类型,只有正数没有负数;

int代表的是整型,可以是负数也可以是正数

因为在程序运行时,并不清楚两个DWORD类型哪个大时,就会出现我今天遇到的问题。

主要核心是这里:

当一个数值大的DWORD类型 - 数值小的DWORD类型,差值是一个特别大的值。

由此可以得出,在与其他值进行比较时,首先需要判断DWORD值是否有效,再进行后续操作!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230102A02BCC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券