首页
社区
课程
招聘
[求助]vc2008的怪事
发表于: 2010-3-12 17:46 4455

[求助]vc2008的怪事

2010-3-12 17:46
4455
if(mykey.time-1000>=1)
                {
                        ss.Format("%d",(DWORD)(mykey.time-1000));
                        MessageBox(ss,"ss",NULL);
                }

居然输出如图的结果为-288.j

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 91
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
有没有搞错。图上不来。
2010-3-12 17:47
0
雪    币: 179
活跃值: (131)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
3
MessageBox貌似用错了
2010-3-12 19:53
0
雪    币: 393
活跃值: (100)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
4
那是MFC吧。.。
2010-3-12 22:35
0
雪    币: 91
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
如果结果为负,就不应该执行下面的语句。他居然是这样?搞了我一下午。是不是VC2008的设置问题。??
2010-3-12 22:57
0
雪    币: 223
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
是你C语言的问题%d是有符号的整数,如果(DWORD)(mykey.time-1000)最高位为1, ss.Format("%d",(DWORD)(mykey.time-1000));这句打印出来的永远为负数,正确用法:
ss.Format("%u",(DWORD)(mykey.time-1000));
2010-3-13 02:30
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
7
%d 是 带符号的,而你的计算显然是无符号的.
要么是你逻辑错了,要么是你格式化参数写错了.
2010-3-14 09:04
0
游客
登录 | 注册 方可回帖
返回
//