If statement 布尔逻辑:如何简化这个IF语句?

If statement 布尔逻辑:如何简化这个IF语句?,if-statement,boolean-logic,demorgans-law,If Statement,Boolean Logic,Demorgans Law,我继承了一些代码,其中包含一个IF语句,如果可能的话,我希望减少它 它本质上是一个简单的IF(a或B)THEN。但它变得棘手,因为A和B是其他表达式的推广 问题:如果可能的话,我如何用更简单的术语重新表达这一点 这是原始的IF语句……为了清楚起见,我用括号和大括号代替了括号 IF ( { W & X & Y & Z } or { C & D & [ ( F & G) or (H & G) or (F & J) ] } ) /* C

我继承了一些代码,其中包含一个IF语句,如果可能的话,我希望减少它
它本质上是一个简单的IF(a或B)THEN。但它变得棘手,因为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) */

从逻辑的角度来看,你不能。没有重复的变量(
Z=-C
没有多大帮助),并且由于嵌套,标准形式将比这更长。这似乎是最短的


从编程的角度来看,如果绝对最大速度不如可读性重要(或者你有一个像样的编译器),我会以一种使决策结构更清晰的方式对它们进行重新分组(从(程序执行)逻辑的角度看,哪一个是相关的?)(假设这些不是函数调用)。我还将其拆分为几个单独的定义,并仅在
中组合结果,如果从逻辑角度看,则不能。没有重复的变量(
Z=,-C
)因为嵌套的缘故,正规形式会比这个长,这看起来是最短的


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

@nobody:感谢您的关注。幸运的是,这些都不是函数调用,速度不是优先事项。我只是添加了一些简单的英文注释来解释逻辑,并留下了足够多的信息。@nobody:感谢您的关注听着。幸运的是,这些都不是函数调用,速度也不是优先考虑的。我只是添加了一些简单的英语注释来解释逻辑,并没有说太多。