wsprintf函数行为异常

像这样的代码:

wsprintf(wsTime, TEXT("%.2d:%.2d:%.2d"), (tNow - tStart) / 3600, ((tNow - tStart) / 60) % 60, (tNow - tStart) % 60);

其中的wsTime变量是一个WCHAR类型的数组,长度为100。tNowtStart都是time_t
类型的数据,用来比对当前时间和开始时间,且tNow是每隔一秒就会更新的,但是以上代码的执行结果永远都是00:00:00,也就是数字不会递增。

但是如果将(tNow - tStart) % 60换到前面,也就是这样:

wsprintf(wsTime, TEXT("%.2d:%.2d:%.2d"), (tNow - tStart) % 60, (tNow - tStart) / 3600, ((tNow - tStart) / 60) % 60);

就能够正常地输出01:00:00,即正常地递增。
不知道为何会有这么奇怪的问题,求各路大神指导……
开发环境是VS2013。

阅读 3.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进