我在下面有一个方法接受oldTimestamp
作为输入参数uint64_t
...现在我需要在上面oldTimestamp
上应用一个公式,每当我申请时公式,我总是将0
作为start
值。
并且我尝试以current timestamp
数据类型(不确定这是否是正确的数据类型)的相同方法以及每当我在{上再次应用相同的公式时 - 以毫秒为单位获取long int
{1}},我总是将currentTimestamp
值视为end
......
以下是我的方法 -
0
我在这里做错了吗?
可能是,我对currentTimestamp和oldTimestamp使用了错误的数据类型,我不应该void getRecord(uint64_t oldTimestamp) {
int start = (oldTimestamp / (60 * 60 * 1000 * 24)) % 14;
cout<<"START: " << start <<endl; // this always print out as 0..?
struct timeval tp;
gettimeofday(&tp, NULL);
long int currentTimestamp = tp.tv_sec * 1000 + tp.tv_usec / 1000; //get current timestamp in milliseconds
int end = (currentTimestamp / (60 * 60 * 1000 * 24)) % 14;
cout<<"END: " << end <<endl; // this always print out as 0 as well..?
}
使用int
和start
?
更新: -
这样的事情会好吗?
end
答案 0 :(得分:1)
void getRecord(uint64_t oldTimestamp) { // you are using uint64_t here
int start = (oldTimestamp / (60 * 60 * 1000 * 24)) % 14; // you are using int here
您可能遇到溢出问题,即调用未定义的行为。
您需要使用uint64_t
作为start
类型。您的currentTimestamp
和end
变量也是如此。
答案 1 :(得分:0)
问题是你使用int来开始和结束。