c++ - 将否定的 double 转换为 int

标签 c++ objective-c c

下面的代码片段有区别吗?

double doubleMillis = -getSecondsSinceNow()*100; // returns double
int timestamp = (int) doubleMillis;

int timestamp = (int) -getSecondsSinceNow()*1000;

我发现我在时间戳记中获得的值存在差异。第一个似乎给了我有意义的结果。

当我做的时候:

int timestamp = -getSecondsSinceNow()*1000;

我得到的结果与第一种方法类似。

最佳答案

在这里,您将 getSecondsSinceNow() (double ) 的返回值转换为 int 并将其乘以 1000:

int timestamp = (int) -getSecondsSinceNow()*1000;

这就像:

int timestamp = ((int) -getSecondsSinceNow())*(1000);

而在下面的情况下,您转换了完整的结果:

一个明确的:

double doubleMillis = -getSecondsSinceNow()*1000;
int timestamp = (int) doubleMillis;

一旦隐式:

int timestamp = -getSecondsSinceNow()*1000;

所以是的,有区别。

关于c++ - 将否定的 double 转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6175869/

相关文章:

c++ - 有没有一种方便的方法可以让一些 Qt 小部件只输入一个字符?

ios - 对我应该如何在 block 中使用 weakSelf 感到困惑

c - 没有从 Pollard 的 rho 算法实现中获得正确的输出

c - C 中使用 scanf 读取和存储整数

c++ - 指向数组语法的指针

c++ - 如何在 Boost 中对多边形进行三角剖分?

ios - Objective C 递归调用

c - 这个 Ocaml 类型定义在其 C stub 中会是什么样子?

c++ - Halide 与 GPU 调度产生黑色图像

c++ - Cocoa 应用程序(OS X 应用程序)中的 OpenCV