我注意到如果我输入printf
语句,代码就会按照我期望的方式工作(if语句为真之前等待5秒)。但如果我不将printf
置于循环中,则if
语句会立即生效。我想知道为什么会这样?
int main()
{
int i;
for(i=0; i<10000000; i++){
int ticks = clock();
int time = (float)ticks / CLOCKS_PER_SEC;
printf("%d \n", time); //If this printf statement is not here
if(time >= 5){ //This will become true immediately
break;
}
}
printf("\nTimer is done");
return 0;
}
答案 0 :(得分:1)
您正在使用int
,而您应该使用time_t
。 int
可能会在此上下文中溢出,从而导致未定义的行为。
答案 1 :(得分:0)
根据计算机的速度,没有打印的循环可能需要不到一秒的时间才能运行1000万次,因此可能会立即退出&#39; (在我平均2岁的桌面上花了大约一秒半的时间)。
如果您想要无限循环,请使用while(1)
或for(;;)
答案 2 :(得分:0)
现在正如@Chris_Dodd所说,你的CPU非常快。因此时间将立即达到值5。