3 回答
TA贡献1995条经验 获得超2个赞
由于该return语句终止了当前函数的执行,因此两种形式是等效的(尽管第二种形式比第一种更具可读性)。
两种形式的效率都相当,如果if条件为假,则基础机器代码必须执行跳转。
请注意,Python支持一种语法,该语法允许您仅使用一种return情况:
return A+1 if A > B else A-1
TA贡献1831条经验 获得超10个赞
返回后请勿使用其他:
# Bad
if (foo)
return 1
else
return 2
# Good
if (foo)
return 1
return 2
return 1 if foo else 2
TA贡献1833条经验 获得超4个赞
关于编码风格:
无论哪种语言,大多数编码标准都禁止将单个函数中的多个return语句禁止作为不好的做法。
(尽管我个人会说在多种情况下多个返回语句确实有意义:文本/数据协议解析器,具有大量错误处理的功能等)
所有这些行业编码标准的共识是,该表达式应写为:
int result;
if(A > B)
{
result = A+1;
}
else
{
result = A-1;
}
return result;
关于效率:
上面的示例和问题中的两个示例在效率方面都完全等效。在所有这些情况下,机器代码都必须比较A> B,然后跳转到A + 1或A-1计算,然后将结果存储在CPU寄存器或堆栈中。
编辑:
资料来源:
MISRA-C:2004规则14.7,依次引用...:
IEC 61508-3。第3部分,表B.9。
IEC 61508-7。C.2.9。
添加回答
举报