将 Timeval 成员变量复制到整数变量
copy timeval member variables to integer variable
我需要使用两个integer
参数 p1 和 p2 表示timeval
结构。我已将tv_sec
复制到 p1 和 tv_usec
复制到 p2。在 32 位(centos(sizeof(long) = sizeof(int)
因此我能够做上面所说的事情。
但在 64 位系统中,(sizeof(tv_sec( = 8(。
在 64 位系统中,如何将此tv_sec
分配给 p1 和 p2 作为 32 位系统的 p2
我的代码如下,
#include <iostream>
#include <sys/time.h>
using namespace std;
int main()
{
struct timeval mytime;
gettimeofday(&mytime, NULL);
cout << "tv_sec_1 : " << mytime.tv_sec << endl;
cout << "tv_usec_1 : " << mytime.tv_usec << endl;
int p1 = mytime.tv_sec;
int p2 = mytime.tv_usec;
}
我需要在结构中使用两个自由整数变量传递这些 timeval 信息通过它输出传递给调用函数。我的目的不是修改结果结构。
tv_sec
和tv_usec
的大小可能会根据您所在的系统而变化。为了避免这种情况,您不应该使用int
来存储它们的值。您应该使用适当的类型 - 即 time_t
和 suseconds_t
。
您的代码应该是:
time_t p1 = mytime.tv_sec;
suseconds_t p2 = mytime.tv_usec;
有关这方面的信息可以在人员和信息页面中找到。此链接包含有关正确使用时间函数的信息。特别是他们对time_t
与int
有这样的说法:
在行为上与"int"完全相同。您可以分配 int 值 到 time_t 变量,反之亦然,time_t并使用 %d 格式,以及所有内容。 将来,要么time_t将不再与 int 相同,要么 "int"的含义将从 4 字节整数变为 8 字节整数
由于Mike Seymour的评论,我修改了我原来的答案,使其更完整/正确。
相关文章:
- enum是C++中的宏变量还是整数变量
- 对已具有设定值的整数变量的加法
- 如何使用C++将字符串中的字符转换为整数变量
- 带有整数的变量参数列表
- 如何将整数分解为不同的变量?
- 如果变量数据包含大于 vector 所有元素的整数,则仅在视觉工作室上接收"矢量下标超出范围"?
- 为什么可以将整数分配给字符串变量?
- 如果用户输入在整数变量中浮动怎么办?
- 如何将整数分配给 char 类型的变量
- 在c++中读取文件时,它如何自动将字符放入字符数组,将数字放入整数变量
- C++:这是使用整数变量作为函数调用指针的正确方法吗
- 如何从字符数组C++中提取2个整数并将它们存储在2个变量中(初学者)
- C++使用cin给变量一个非整数的值
- 如何为具有整数名称的变量设置位集
- C++ 在方程中使用变量;错误:表达式必须具有整数或无作用域枚举类型及其他
- C++ 两个线程,共享几个整数变量
- 使用 size_t 初始化循环变量时的整数下溢
- C 类变量整数具有不同的值
- 未初始化的变量整数'A'哪个内存部分占用内存?
- 寻找QT函数将qint64类型的变量(整数)四舍五入到最接近的十