gpt4 book ai didi

c++ - 在 C++ 中,函数在 `if` 分支与 `if` 外部返回

转载 作者:搜寻专家 更新时间:2023-10-31 00:11:06 25 4
gpt4 key购买 nike

编译后的代码有区别吗

double func(bool x) {
if (x) {
return 1.0;
} else {
return 2.0;
};
}

double func(bool x){
if (x) {
return 1.0;
};
return 2.0;
}

是否有性能原因使一个优于另一个?

我唯一知道的是,第二个打字速度更快。


我一直在使用 g++,但如果不同的话,了解其他人的情况会很有趣。

最佳答案

这里没有性能差异,因为一旦编译器采用“then”分支,“else”分支就变得不可访问了。优化编译器生成的代码应该是相同的。

您示例的可读性也没有改变。但是,当 else 分支很长而“then”分支很短时,第二个代码段的读起来更好,因为它的嵌套级别较低。

“then”分支很短而“else”分支很长的情况非常常见 - 当您执行参数检查并抛出异常或提供提前终止以防参数超出范围时会发生这种情况。当您在函数顶部考虑多个验证时,第二种方法的优势变得更加明显,例如

if (!arg1.isInRange()) {
return FAILURE_REASON_1;
} else {
if (!arg2.isInRange()) {
return FAILURE_REASON_2;
} else {
if (!arg3.isInRange()) {
return FAILURE_REASON_3;
} else {
... // Payload code goes here
}
}
}

对比

if (!arg1.isInRange()) {
return FAILURE_REASON_1;
}
if (!arg2.isInRange()) {
return FAILURE_REASON_2;
}
if (!arg3.isInRange()) {
return FAILURE_REASON_3;
}
... // Payload code goes here

关于c++ - 在 C++ 中,函数在 `if` 分支与 `if` 外部返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35071535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com