首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >timeval未返回预期结果

timeval未返回预期结果
EN

Stack Overflow用户
提问于 2011-04-21 07:21:06
回答 2查看 682关注 0票数 2

我有一些代码如下所示:

代码语言:javascript
复制
#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

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

EN

回答 2

Stack Overflow用户

发布于 2011-04-21 07:28:01

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

当你使用正确的输入类型时,它就works了。你调用了UB,读取了不属于你的内存;像这样的bug可能会产生有趣的结果,这些结果基于你通常不会期望改变的因素,因为你的内存内容发生了变化。

票数 4
EN

Stack Overflow用户

发布于 2011-04-21 07:28:07

如果您将%llu更改为%lu,似乎可以正常工作。

http://codepad.org/YGubabLR

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5737755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档