【发布时间】:2022-01-07 12:53:59
【问题描述】:
int i{0}; //(1)
int i = 0; //(2)
我是否正确理解在第一种情况下 (1) 变量 i 已经创建为 0 作为它的值,在 (2) 中它将创建没有值然后分配一个值 0,所以 (1 ) 总是比 (2) 快?
但似乎大多数(全部?)现代编译器仍会将 (2) 优化为与 (1) 相同?
【问题讨论】:
-
问题中的 1 是错字吗?
-
不,在这里它们最终的意思是一样的。为
i分配了空间,该空间立即归零。不涉及任务。 See here for documentation -
不,代码将是相同的:编译器没有理由生成带有额外分配的较慢代码。
i没有价值就无法创建 -
Excellent viewing 如果你有一个小时并且真的想深入了解 C++ 初始化。
-
你的代码中没有赋值
标签: c++ c++11 initialization compiler-optimization