2

重複
の可能性:Cclock()関数はゼロを返すだけです

次のコードを実行して、clock()関数の動作をテストしました。私はubuntu12.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;
}

しかし、名前を書くのにどれだけ時間がかかっても、経過時間は常に0msとして表示されます。

何が問題なのか教えていただけますか?

4

2 に答える 2

6

clock()プログラムの実行が開始されてから使用されたティック数を返します値を取得するための (この特定の) 例は必要ありませんclock_t begin

beginとの両方のend値を出力してみて、それらが何であるかを確認してください。ユーザー入力の待機は CPU 時間を使用しないため、両方とも 0 または 0 に近い可能性があります。

いずれにせよ、目盛りの精度 time()は必要ないので、この関数をお勧めします。http://www.cplusplus.com/reference/clibrary/ctime/time/

于 2012-08-15T20:05:00.737 に答える
1

time() 関数を使用する必要があると思います。http://asust.in/007D 呼び出すだけで、Unix エポック (1970 年 1 月 1 日) からの秒数が返されます。

clock() 関数は、プログラムが開始されてからのクロック ティック数を返します。こちら: http://asust.in/007E

于 2012-08-15T20:03:53.137 に答える