【发布时间】:2012-05-15 20:13:00
【问题描述】:
我有这段代码:
struct timeval start, end;
gettimeofday(&start, NULL);
//code I'm timing
gettimeofday(&end, NULL);
long elapsed = ((end.tv_sec-start.tv_sec)*1000000 + end.tv_usec-start.tv_usec);
ofstream timeFile;
timeFile.open ("timingSheet.txt");
timeFile << fixed << showpoint;
timeFile << setprecision(2);
timeFile << "Duration: " << elapsed << "\n";
timeFile.close();
这将输出经过的微秒数。但是,如果我更改此行
long elapsed = ((end.tv_sec-start.tv_sec)*1000000 + end.tv_usec-start.tv_usec);
到这里:
long elapsed = ((end.tv_sec-start.tv_sec)*1000000 + end.tv_usec-start.tv_usec)/1000000.0;
我得到一个负值。为什么会这样?
【问题讨论】:
-
你能用使用的语言标记这个问题吗?
-
看起来像 C++,但如果我错了,请纠正我。
-
end和start的值是什么导致负值? -
请添加一些导致问题的示例值。否则我们只能猜测。
标签: c++ double long-integer