【发布时间】:2019-12-17 16:50:19
【问题描述】:
我的问题是:
我应该用0 还是0.0 初始化像double 或float 这样的浮点变量(当然,如果我想用等于0 的值来初始化它)?
例如:
double var = 0.0;
对比:
double var = 0;
这有什么不同吗?
问题对 C 和 C++ 开放,因为我同时使用两者并且不想两次提出相同的问题。如果这两者在特别是这种情况下存在显着差异,请说明您关注的是哪种语言。
由于对 C++ 的一半关注,构造函数的情况也可能成为对该主题的影响,当然初始化通常是 C++ 中的一个更广泛的主题,但我不知道这是否会影响答案.
非常感谢。
【问题讨论】:
-
它没有任何区别,但可能会向读者展示意图。
-
两个都试一下,看看生成的代码,看看它有什么(如果有的话)不同。
-
在这种情况下没有区别。也就是说,如果你有类似
std::vector<double> foo = stuff; std::accumulate(foo.begin(), foo.end(), 0);的东西,它会产生很大的不同,因为现在accumulate使用int而不是double。因此,使用与类型匹配的字面量应该会减少问题。 -
@Someprogrammerdude 这是个坏建议。仅仅因为特定的编译器以一种方式生成代码并不意味着标准要求它是这种方式。
-
@NathanOliver-ReinstateMonica 实际上我本来希望标准能够提供这些......但我认为
unsigned long n = 7优于auto n = 7ul(我之前的最后一个例子)。
标签: c++ c floating-point initialization ieee-754