如果没有printf,声明立即成立

时间:2017-04-05 03:08:10

标签: c

我注意到如果我输入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;
}

3 个答案:

答案 0 :(得分:1)

您正在使用int,而您应该使用time_tint可能会在此上下文中溢出,从而导致未定义的行为。

答案 1 :(得分:0)

根据计算机的速度,没有打印的循环可能需要不到一秒的时间才能运行1000万次,因此可能会立即退出&#39; (在我平均2岁的桌面上花了大约一秒半的时间)。

如果您想要无限循环,请使用while(1)for(;;)

答案 2 :(得分:0)

  1. clock(); 返回您在程序中花费的时间。
  2. CLOCKS_PER_SEC 此宏扩展为表示的表达式 每秒钟数的滴答数。
  3. 现在正如@Chris_Dodd所说,你的CPU非常快。因此时间将立即达到值5。