繁体   English   中英

我应该用 0 或 0.0 初始化一个浮点 (double,float) 变量吗?

[英]Should I initialize a floating-point (double,float) variable with 0 or 0.0?

我的问题是:我应该用0或更确切地说0.0初始化一个浮点变量,如doublefloat (当然,如果我想用等于0的值初始化它)?

例如:

double var = 0.0;

相比之下:

double var = 0;

这有什么不同吗?


C 和 C++ 的问题是开放的,因为我同时使用这两种方法并且不想两次提出相同的问题。 如果这两者之间在特别是这种情况下存在显着差异,请提及您关注哪种语言。

由于对 C++ 的半分关注,构造函数的大小写也可能会影响该主题,当然初始化通常是 C++ 中的一个更广泛的主题,但我不知道这是否会影响答案。

非常感谢。

正如@NathanOliver 评论的那样,在这种情况下没有区别。 但总是说出你的意思是一个好习惯:

double var = 0.0;

这种习惯会得到回报的地方是std::accumulate

std::vector<double> v{1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0, 10.1};

double sum = std::accumulate(v.begin(), v.end(), 0);  // 0 here is wrong!

这不会起作用,因为std::accumulate被声明为:

template< class InputIt, class T >
constexpr T accumulate( InputIt first, InputIt last, T init );

所以0导致Tint

您可以像这样初始化双精度:

double test = 0.0;

但是,如果要 100% 正确,则必须像这样初始化浮点数:

float test = 0.0f;

f表示它前面的数字是一个浮点数。 如果您省略它,该数字将被解释为双精度值并自动转换回浮点数,因为您的变量是浮点型。 不使用f不会造成任何真正的麻烦,但会引入不必要的开销。 我相信当您仅使用 0 而不是 0.0 初始化双精度值时,会发生类似的事情,但我不确定这部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM