我有一些代码如下所示:
#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
但我不知道为什么第一个数字搞砸了。此外,为了使数字彼此不同,类调用是完全必要的。
发布于 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可能会产生有趣的结果,这些结果基于你通常不会期望改变的因素,因为你的内存内容发生了变化。
发布于 2011-04-21 07:28:07
如果您将%llu更改为%lu,似乎可以正常工作。
http://codepad.org/YGubabLR
https://stackoverflow.com/questions/5737755
复制相似问题