![]() |
1
1
有 不 就编码风格而言,我认为你把事情看得太字面了。例如,您的陈述在以下情况下是正确的。。。
... 甚至在。。。
... 但在我看来,还有其他一些情况可以通过提前“申报和分配”得到更好的处理。考虑在堆栈或各种OOP结构上构造的结构,如:
|
![]() |
2
1
通常,如果变量应该具有的值已知,我建议在定义变量时对其进行初始化,如果值未知,则不初始化变量。无论哪种方式,都要尽可能地将其用于范围规则允许的范围内。
不是针对你展示的案例-你不会因为拥有
然后您将得到一个警告,x可能未经初始化就被使用,至少在gcc中是这样。
除非您有特定的理由为其中两个分支分配两次值,否则没有必要先将默认值分配给x,因为它会停止编译器警告您已经覆盖了每个分支。 |
![]() |
3
0
我有点同意这个建议,尽管我不完全确定标准中是否有关于它的内容,而且我非常怀疑编译器警告的内容是真的。
问题是,现代编译器能够并且确实检测到未初始化变量的使用。如果在初始化时将变量设置为默认值,则会丢失该检测。默认值也会导致错误;当然在你的例子中,
|
![]() |
4
0
|
![]() |
5
0
由于未初始化的指针,我看到了太多的bug,所以我一直主张用NULL_PTR声明每个变量,用一些无效/默认值声明每个原语。 由于我从事RTO和高性能但低资源系统的工作,我们使用的编译器可能无法捕获未初始化的使用。尽管我怀疑现代编译器也能100%可靠。
所以我说,只要您使用的是普通的旧C/C++,就要坚持使用它。
http://www.codeproject.com/KB/dotnet/DontInitializeVariables.aspx |
![]() |
Community wiki · C中有哪些耗时的操作? 1 年前 |
![]() |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
![]() |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
![]() |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |