GetTickCount的问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 10:58:25
我写这样一段代码

while(n>1)
{
if((GetTickCount()-dwCurTime)=50)
{
for(int x=0;x<250;x=x+n)
for(int b=0;b<234;b=b+n)
{
Client.SetPixel(x,b,RGB(255,255,255));
}
dwCurTime=GetTickCount();
n--;
}
}
{
for(int x=0;x<250;x=x+n)
for(int b=0;b<234;b=b+n)
{
Client.SetPixel(x,b,RGB(255,255,255));
}
dwCurTime=GetTickCount();
n--;
}
}

程序没有任何反应 但是如果把if((GetTickCount()-dwCurTime)==50)改成==500 就会相应 改成1000,1500,2000等等这些500倍数也会相应 可是为什么改成别的就不响应呢? 当然我知道这程序应该这样if((GetTickCount()-dwCurTime)>50) 但是我就想知道 为什么 用== 必须得500的倍数呢? 高手回答 可以追加
我程序中写得是==50 可问题是 为什么单单==500 或者500的倍数就可以 别的数就不行呢? 我知道这种设计不对 我也知道怎么设计 问题是 为什么别的数不行?

如果是按照500MS的倍数递增 那么>50 和==500 不就一样了吗? 呵呵 你不是XINGZE_CHI吧?

if((GetTickCount()-dwCurTime)=50)

本身这条表达式意思就错了……另外这种设计也不符合实际

你能保证那个时间差一定等于50ms吗?

最后GetTickCount并没有那么精确,如果卢用高精度的计时,请使用
QueryPerformanceCounter
QueryPerformanceFrequency

==============================
这个关系到WINDOWS对GetTickCount的处理了
你要注意这个函数并不精确,它运行时有可能是按某个值的倍数来递增的,就如你遇到的情况一样
==============================
如果是500MS递增,那就正确……如果不是呢?对于一些返回值不确定的函数来使用==来判断它们的值是不明智的做法啊~~~
另:我不是XINGZE_CHI