当我使用这个

#include<time.h>
//...
int n = time(0);
//...

我会警告将时间转换为int。有没有办法删除此警告?

有帮助吗?

解决方案

时间返回 time_t 而不是整数。最好使用该类型,因为它可能大于 int.

如果您真的需要 int, ,然后将其明确打字,例如:

int n = (int)time(0);

其他提示

是的,将N更改为一个 time_t. 。如果您在大多数 /所有系统上查看签名。H,您会发现这就是它的返回。

#include<time.h>
//...
time_t n = time(0);
//...

注意 阿拉克 是正确的:使用32位int是一个问题,至少是一个问题 由于2038错误. 。但是,您应该考虑整数n(而不是time_t)上的任何算术都只会增加代码会尽早越过该错误的概率。

PS:如果我在原始答案中没有清楚地表明,对编译器警告的最佳响应几乎总是是解决您要警告的情况。例如,将较高的精度数据迫使较低的精度变量丢失信息 - 编译器试图警告您,您可能刚刚创建了一个地雷错误,直到很久以后,有人才会绊倒。

我认为您正在使用Visual C ++。返回类型的 time(0)64bit int 即使您正在编程 32bit 平台不同 g++. 。要删除警告,只需分配 time(0)64bit 多变的。

您可能想使用time_t类型而不是int。

http://en.wikipedia.org/wiki/time_t.

原因是time()函数返回time_t时间,因此在这种情况下,您可能需要对int或uint进行静态铸件。以这种方式写:

time_t timer;
int n = static_cast<int> (time(&timer)); // this will give you current time as an integer and it is same as time(NULL)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top