clock()函数总是返回0

Avi*_*mar 2 c++ time clock

可能重复:
C clock()函数只返回零

我运行以下代码来测试clock()函数的工作情况.我在ubuntu 12.04上工作.

#include <stdio.h>
#include <time.h>
#include <iostream>
using namespace std;


double diffclock(clock_t clock1,clock_t clock2)
{
double diffticks=clock1-clock2;
double diffms=(diffticks*10)/CLOCKS_PER_SEC;
return diffms;
}

int main()
{
string name;
int i;
clock_t begin=clock();
cout << "Hi what is your name? ";
getline(cin, name);
clock_t end=clock();
cout << "Time elapsed: " << double(diffclock(end,begin)) << " ms"<< endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)

但无论我花多少时间写下我的名字,经过的时间总是显示为0ms.

你能告诉我这是什么问题吗?

小智 6

clock()返回自程序启动执行以来已使用的刻度数.没有(在此特定的)示例中获取clock_t begin值.

尝试打印出beginend值,看看它们是什么.由于等待用户输入不使用CPU时间,它们可能都是0或接近0.

无论哪种方式,我推荐该time()功能,因为您不需要刻度精度. http://www.cplusplus.com/reference/clibrary/ctime/time/

  • "C标准在程序开头允许任意值",因此使用clock()的绝对值是不正确的 (3认同)