简化if-else-if梯形,使函数调用只进行一次

时间:2017-08-23 17:37:59

标签: c if-statement optimization

如何简化以下if-else-if梯形图,使函数调用只进行一次?

if (Condition A){
    A();
}
else {
    if (Condition B) {
        A();
    }
} 

2 个答案:

答案 0 :(得分:1)

将其更改为:

if ((Condition A) || (Condition B)) {
    A();
}

如果A()Condition AtrueCondition B,您希望功能true运行,您可以使用|| (或)运营商。如果条件为true,则会返回true

答案 1 :(得分:0)

不幸的是,总的来说,你不能简化这个" tree" ifs。如果他第二次(或下一次)病情有副作用。因此,总是很好地考虑为什么有人这样做了。

示例:

if(readbytefromUART() == 'b' || readbytefromUART() == 'c') .......
/* if condition ... == 'b' is met , there is no second call to the function

代码中常见的错误

if(readbytefromUART() == 'b' && readbytefromUART() == 'c') .......
/* if condition ... == 'b' is not met , there is no second call to the function

https://ideone.com/cCO9MM

在另一个答案中提出的语法

if (cond1) || (cond2) {

在C中是非法的,它不会编译