c++ - 我应该用 0 还是 0.0 初始化浮点(double、float)变量?

标签 c++ c floating-point initialization ieee-754

我的问题是: 我应该用 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!

关于c++ - 我应该用 0 还是 0.0 初始化浮点(double、float)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59378717/

相关文章:

go - 将 float 打印为字符串时的精度损失

Javascript 浮点减法

c++ - iostream,一些问题

c++ - 如何在迷宫中找到最短路径?

c++ - 矩阵模式。稀疏行运算符*(矩阵, vector )

c++ - 使用 Matlab Coder 将 Matlab m 文件转换为 C/C++ 代码,包括 mex 文件 (mxArray)

c++ - 如何从命令行 (Windows 7) 编译和运行项目?

c - SIGUSR1 - 杀死 C 中的 sigaction

c - 如何捕获哪个 TreeView 节点被单击

c++ - 如何在 C++ 中将精确的浮点值保存和恢复到人类可读文件