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