我读了一个关于if
声明的问题
哪个代码更快/相同?
如果(a==1)返回0;
if(a==1) { 返回 0; }
在这种情况下,速度或编译器真的有什么区别吗?
先感谢您。
关于运行速度,它们是完全一样的。
C++11 标准将第一种形式定义为第二种形式的隐式变体。根据第 6.4/1 段,事实上:
[...]选择语句中的子语句 (每个子语句,
else
以语句的形式if
)隐式定义了一个块范围(3.3)。如果选择语句中的子语句是单个语句而不是复合语句,就好像它被重写为包含原始子语句的复合语句。[示例:if (x) int i;
可以等效地改写为
if (x) { int i; }
因此,在 if 语句之后, i 不再在范围内。—<em>结束示例]
解析额外大括号所需的额外编译时间非常短,可以安全地忽略。在您的情况下选择使代码更易于阅读或维护的形式。
除了在编译时解析大括号所需的微小、微小、微小的额外时间外,性能没有任何差异。
运行时速度完全相同。编译速度可能在纳秒级左右存在差异。然而,出于所有实际原因和目的,这两个陈述是相同的。
两种说法的速度绝对没有区别。
过早的优化是一件坏事。不要花很多时间担心这些事情。