Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何更好地组织这两个连续的IF语句?_C_If Statement_Conditional_Logic_Boolean Logic - Fatal编程技术网

C 如何更好地组织这两个连续的IF语句?

C 如何更好地组织这两个连续的IF语句?,c,if-statement,conditional,logic,boolean-logic,C,If Statement,Conditional,Logic,Boolean Logic,我想更好地组织以下两个if语句: if(A || B){ do stuff... } if(A && ! B){ do other stuff... } 有更好的办法吗 编辑:在第二句话的B之前,对不起…对于最初的问题,如果第二个条件是A和B,我的回答是: 如果没有其他情况,可以将第二个块嵌套在第一个块中,以防止在第一个条件失败时进行不必要的计算。否则,我看不到任何好的方法来缩短这个。。。嵌套假设第一个块中的代码不更新A和B,并且可能会更新 对于新问题,我的a

我想更好地组织以下两个
if
语句:

if(A || B){
    do stuff...
}

if(A && ! B){
    do other stuff...
}
有更好的办法吗


编辑
在第二句话的
B
之前,对不起…

对于最初的问题,如果第二个条件是A和B,我的回答是:

如果没有其他情况,可以将第二个块嵌套在第一个块中,以防止在第一个条件失败时进行不必要的计算。否则,我看不到任何好的方法来缩短这个。。。嵌套假设第一个块中的代码不更新A和B,并且可能会更新

对于新问题,我的answe将在第一个检查的问题中嵌入一个块!B、 省略第二个块。这相当于对新问题给出的另一个答案

if( A || B ) {
    do some stuff;
    if( !B ) {
        do other stuff;
    }
}

但是好处取决于使用情况,这一版本可能更难理解。

A | | B也会在A和B为真时计算为真。这是你想要的行为吗?不幸的是我忘了!运算符位于第二个IF语句的B之前。我现在已经编辑了这个问题。有人终于明白了,认为我看不出它的优点:)+1@Ziyao,是的,我也是,刚刚回答了这个问题:现在的优点是代码的性能更好,因为我避免了对A的求值。不仅如此,代码简化了,避免了任意复杂表达式的第二次键入。缺点是我获得了一个额外的嵌套级别。@francesco,性能优势为零,因为优化器的做法不同。无论如何,当代码变得更难理解时,第二次键入
A
不是问题。事实上,可读性应该是最重要的问题。我的答案不再相关,因为OP改变了问题。那么最好是编辑或删除它,而不是添加注释。