简化(并使其更清晰)逻辑条件

时间:2017-07-21 20:50:31

标签: c

我正在寻求帮助,使这个逻辑更清晰。假设每个字母都是比较语句(例如TRUE == a.foo)。每个字母表大约有30个字符长。

if ( ((a || b)
   && (c || d)) ||
     ((e || f)
   && (g || h)) )

有什么建议吗?

4 个答案:

答案 0 :(得分:4)

尝试按组排列子表达式,排列括号:

if (((a || b) && (c || d)) || 
    ((e || f) && (g || h)))

答案 1 :(得分:4)

分解它。

int ab = a || b,
    cd = c || d,
    ef = e || f,
    gh = g || h,
    firstThing = ab && cd,
    secondThing = ef && gh;

if (firstThing || secondThing)

答案 2 :(得分:1)

为了使条件正确对齐并使逻辑运算符脱颖而出,我会使用这种风格:

if (((a || b) && (c || d))
||  ((e || f) && (g || h))
... 
||  ((u || v) && (w || x))) {
    /* handle the successful test */
} else {
    /* handle the other cases */
}

答案 3 :(得分:0)

这有一些变化,但我认为这是一种非常明确的方式:

layout_weight