2

我读了一个关于if声明的问题

哪个代码更快/相同?

如果(a==1)返回0;

if(a==1) { 返回 0; }

在这种情况下,速度或编译器真的有什么区别吗?

先感谢您。

4

4 回答 4

8

关于运行速度,它们是完全一样的

C++11 标准将第一种形式定义为第二种形式的隐式变体。根据第 6.4/1 段,事实上:

[...]选择语句中的子语句 (每个子语句,else以语句的形式if)隐式定义了一个块范围(3.3)。如果选择语句中的子语句是单个语句而不是复合语句,就好像它被重写为包含原始子语句的复合语句。[示例

if (x)
    int i;

可以等效地改写为

if (x) {
    int i;
}

因此,在 if 语句之后, i 不再在范围内。—<em>结束示例]

解析额外大括号所需的额外编译时间非常短,可以安全地忽略。在您的情况下选择使代码更易于阅读或维护的形式

于 2013-03-23T14:46:16.253 回答
5

除了在编译时解析大括号所需的微小、微小、微小的额外时间外,性能没有任何差异。

于 2013-03-23T14:46:19.330 回答
3

运行时速度完全相同。编译速度可能在纳秒级左右存在差异。然而,出于所有实际原因和目的,这两个陈述是相同的。

于 2013-03-23T14:46:41.177 回答
2

两种说法的速度绝对没有区别。

过早的优化是一件坏事。不要花很多时间担心这些事情。

于 2013-03-23T14:46:48.760 回答