布尔逻辑:如何简化此 IF 语句?
Posted
技术标签:
【中文标题】布尔逻辑:如何简化此 IF 语句?【英文标题】:Boolean Logic: How can I simplify this IF statement? 【发布时间】:2011-09-30 03:39:02 【问题描述】:我继承了一些代码,其中包含我希望尽可能减少的 IF 语句。 它本质上是一个简单的 IF (A or 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) */
【问题讨论】:
【参考方案1】:从逻辑的角度来看,你不能。没有重复的变量(Z = ¬C
没有多大帮助)并且由于嵌套的正常形式会比这更长。这似乎很短。
从编程的角度来看,如果绝对最大速度不如可读性重要(或者你有一个不错的编译器),我会以一种使决策结构更清晰的方式重新组合它们(其中哪些与(程序执行)逻辑观点?),即使这重复检查某些变量(假设这些不是函数调用)。我还将其拆分为几个单独的定义,并仅将结果合并到 if
中。
【讨论】:
.@nobody:感谢您的关注。幸运的是,这些都不是函数调用,速度也不是优先事项。我只是添加了一些简单的英语 cmets 来解释逻辑,然后就不用管了。以上是关于布尔逻辑:如何简化此 IF 语句?的主要内容,如果未能解决你的问题,请参考以下文章