[英]Should I initialize a floating-point (double,float) variable with 0 or 0.0?
我的问题是:我应该用0
或更确切地说0.0
初始化一个浮点变量,如double
或float
(当然,如果我想用等于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
导致T
为int
!
您可以像这样初始化双精度:
double test = 0.0;
但是,如果要 100% 正确,则必须像这样初始化浮点数:
float test = 0.0f;
f
表示它前面的数字是一个浮点数。 如果您省略它,该数字将被解释为双精度值并自动转换回浮点数,因为您的变量是浮点型。 不使用f
不会造成任何真正的麻烦,但会引入不必要的开销。 我相信当您仅使用 0 而不是 0.0 初始化双精度值时,会发生类似的事情,但我不确定这部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.