【发布时间】:2026-01-30 06:30:01
【问题描述】:
我为此编写了一个代码,但它不起作用。这是代码:
#include <stdio.h>
#include <time.h>
long timediff(clock_t t1, clock_t t2) {
long elapsed;
elapsed = ((double)t2 - t1) / CLOCKS_PER_SEC * 1000;
return elapsed;
}
int main(void) {
clock_t t1, t2;
int i;
long elapsed;
long settime = 9;
t1 = clock();
for (i=0; i > 10000000; i++) {
t2 = clock();
elapsed = timediff(t1, t2);
if (elapsed==settime)
printf("set time reached\n");
break;
}
printf("elapsed: %ld ms\n", elapsed);
return 0;
}
由于某种原因,它没有执行 if 语句。我唯一能看到打印到终端的是elapsed: 4195440 ms。我需要能够指定程序在被剪切之前运行多长时间。
例如,我希望此代码运行的方式是,我将 settime 设置为 5,这样在 5 毫秒后,代码停止并且“已达到设置时间”消息打印到终端。我不确定这是否重要,但我使用的是 Ubuntu 操作系统。
【问题讨论】:
-
用
(elapsed>=settime)代替(elapsed==settime)是否有效?我担心它可能会“超过”您的预设值。 -
@Blaze 感谢您的评论。不幸的是,这不起作用。它仍然打印
elapsed: 4195968 ms。 -
另外,
break不是if语句的一部分。 -
for (i=0; i > 10000000; i++)应该是for (i=0; i < 10000000; i++)否则控制不会只进入循环。此外,10000000对于整数来说太大了。 -
@kiranBiradar:“10000000 对于整数来说也太大了。”好吧,我想说 Ubuntu 至少是 32 位的,所以
int通常会上升到2'147'483'647.