2
A
回答
8
关于运行时的速度,他们是完全一样的东西。
的C++ 11标准定义的第一种形式为第二形式的一个隐式的变化。每个段落6.4/1,在一个事实:
[...]在一个选择语句的子语句 (每个子语句,在
else
形式if
语句)隐式地定义的块范围(3.3 )。如果选择语句中的子语句是单个语句而不是复合语句,它就好像 它被重写为包含原始子语句的复合语句。 [实施例:if (x) int i;
可以等效改写为
if (x) { int i; }
if语句之后。因此,i是不再在范围内。 - 年底例如]
解析额外的括号所需的额外的编译时间是如此之小,它可以安全地忽略。 选择使代码易于阅读或维护的形式。
5
3
运行速度是完全一样的。编译速度可能会在几纳秒左右的差异。然而,出于所有的实际原因和目的,这两个陈述是相同的。
2
还有绝对没有两种语句的速度不同。
过早的优化是一件坏事。不要花太多时间担心这种事情。
我敢打赌,编译器发现这个问题令人反感。比这更好! – Pubby 2013-03-23 14:46:53
其实我相信只要提出这个问题,你就会花更多的时间等待答案,而不是所有你的组合编译器调用都需要解析这个额外的对{}'。 – Zeta 2013-03-23 14:48:40
括号不重要;真正的区别在于括号。 'return 0;'比* return(0)*更快* – 2013-03-23 14:49:24