timeval没有返回预期的结果

时间:2011-04-20 23:21:06

标签: c++ timeval time.h

我有一些代码如下所示:

#include <stdio.h>
#include <sys/time.h>

typedef struct{
     struct timeval timestamp;
}teststruct;

class TestClass {
     public:
       TestClass();
       void dosomething(int, int);
};

TestClass::TestClass(){
}

void
TestClass::dosomething(int num, int numb) {
}

int main(void){
     TestClass *testclass = new TestClass();
     teststruct test;
     gettimeofday(&test.timestamp, NULL);
     printf("%llu \n", test.timestamp.tv_sec);
     testclass->dosomething(1,1);
     printf("%llu \n", test.timestamp.tv_sec);
}

此代码的输出为:

13825459612132795564 做一点事 5598307500

但我不知道为什么第一个数字搞砸了。同样,为了使数字彼此不同,类调用是完全必要的。

2 个答案:

答案 0 :(得分:4)

我得到warning: format ‘%llu’ expects type ‘long long unsigned int’, but argument 2 has type ‘__time_t’。应该是一个提示。将编译器的警告级别提升到合理的范围。

使用正确的输入类型时works。你正在调用UB,读取不属于你的内存;像这样的错误可以产生有趣的结果,根据你通常不会产生差异的因素表现出不同的结果,因为你的记忆内容会发生变化。

答案 1 :(得分:1)

如果您将%llu更改为%lu

似乎可行。

http://codepad.org/YGubabLR