布尔逻辑:如何简化此IF语句?

时间:2011-07-07 04:25:11

标签: if-statement boolean-logic demorgans-law

我继承了一些包含IF语句的代码,如果可能的话我想减少它。
从本质上讲,它是一个简单的IF(A或B)。但它变得棘手,因为A和B是其他表达式的概括。

问题:如果可能的话,如何以简单的方式重新表达这一点?

这是原始的IF声明....
为了清楚起见,我用圆括号代替括号和括号。

IF ( { W & X & Y & Z } or  { C & D & [ ( F & G) or (H & G) or (F & J) ] } )
/* Comment: For what it's worth: (Z = not c) */

1 个答案:

答案 0 :(得分:1)

从逻辑的角度来看,你做不到。没有重复的变量(Z = ¬C没有多大帮助),并且由于嵌套,普通形式将比这更长。这似乎很短。

从编程的角度来看,如果绝对最大速度不如可读性重要(或者你有一个像样的编译器),我会以一种使决策结构更清晰的方式对它们进行重新分组(其中哪些与a(程序执行)逻辑观点?),即使重复检查某些变量(假设这些不是函数调用)。我还将其拆分为几个单独的定义,并仅将结果合并到if