我正在尝试连续轮询勾选的时钟周期数,并仅在循环计数为100 +开始时间时打印我的语句。这样,如果我的start = 1000000,则只应在end = 1000100时执行print语句 它应该表明例如假设在开始时,时间= 1000000 您好,开始值:1000000,结束值:1000101
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
clock_t start,end;
start = clock();
while(end=clock() < (start + 100))
{};
printf("Hello, value of start:%d and value of end:%d", start, end);
}
但是我得到了 你好,start:0的值和end的值:0
我已经编辑了我的代码并获得了end = 0.0000的值。这是我编辑的代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
clock_t start;
start = clock();
clock_t end = start;
printf("Hello");
while(end < (start + 100))
{
end = clock();
};
printf("value of end is %f \n", end);
}
答案 0 :(得分:1)
我非常肯定这一行:
while(end=clock()< start + 100)
需要这样:
while( (end=clock()) < (start + 100) )
写得更好:
void main()
{
clock_t start = clock();
clock_t end = start;
while(end < (start + 100))
{
end = clock();
};
printf("Hello, value of start:%d and value of end:%d", (int)start, (int)end);
}
答案 1 :(得分:1)
while(end = clock()&lt; start + 100)
不正确,因为=
的优先级低于<
。
准确地说,您的陈述将被解释为这样(注意优先顺序:+
然后<
然后=
):
while( end = ( clock() < ( start + 100 ) ) )
;
( clock() < ( start + 100 ) )
是一个布尔表达式,它将是1或0;您的while
循环会一直运行,直到条件出错,这意味着( clock() < ( start + 100 ) )
为0,然后将其分配给end
。
所以不要犹豫是否要在表达式中添加额外的括号。在这种情况下,您需要的是:
while( ( end=clock() ) < start + 100)
;
答案 2 :(得分:1)
第一个问题是正如其他人所说的那样,if条件的优先顺序是错误的。第二个是clock_t不一定表示为整数。最好的选择是转换为double,这将在clock_t为64位整数但值相对较小的常见情况下提供足够的范围。