C++ 如果带或不带花括号

C++ 如果带或不带花括号,c++,c,C++,C,我读了一个关于if语句的问题 哪种代码更快/相同 如果(a==1)返回0 如果(a==1){返回0;} 在这种情况下,速度或编译器真的有什么不同吗 提前谢谢。关于运行时速度,它们完全一样 C++11标准将第一种形式定义为第二种形式的隐式变体。根据第6.4/1段,事实上: […]选择语句中的子语句 (在if语句的else形式中,每个子语句都隐式定义了一个块范围(3.3)。如果selection语句中的子语句是单个语句而不是复合语句,则 它被重写为包含原始子语句的复合语句。[示例: 可以等效地重写为

我读了一个关于
if
语句的问题

哪种代码更快/相同

如果(a==1)返回0

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

在这种情况下,速度或编译器真的有什么不同吗


提前谢谢。

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

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

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

可以等效地重写为

if (x) {
    int i;
}
因此,在if语句之后,i不再在范围内


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

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

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

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


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

我打赌编译器会觉得这个问题令人反感。比那好多了!事实上,我相信只要问这个问题,你等待答案的时间就比你所有的组合编译器调用解析那对额外的
{}
所花费的时间都要多;真正的区别在于括号<代码>返回0比
返回(0)快得多。。把花括号放在那里所需的时间
if (x) {
    int i;
}