如何正确地将time_t转换为long int?

Rya*_*nas 5 c++ casting

我还在学习C++中的类型转换,我现在正在这样做

long int t = time(NULL);
Run Code Online (Sandbox Code Playgroud)

我正在使用VS2013并注意到从'time_t'到'long'警告的转换,所以我想我会把它转换成看起来像;

long int t = static_cast<long int> time(NULL);
Run Code Online (Sandbox Code Playgroud)

然而,这仍然无法结合静态演员和C风格的演员表

long int t = static_cast<long int> (time(NULL));
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否有人可以帮助阐明这一点?

Seb*_*ler 6

time(NULL)不是强制转换,而是返回的函数调用time_t.由于time_t类型不完全相同long int,您会看到警告.

此外,static_cast<T>(value)需要括号,这就是您的第一个版本不起作用的原因.