C++ if语句中的优化/减少条件表达式

C++ if语句中的优化/减少条件表达式,c++,if-statement,optimization,C++,If Statement,Optimization,目标是通过发现变量之间的值依赖关系来优化大条件表达式,以便减少逻辑OR语句 假设我们有以下条件: if((A == 0 && B == 0) || (A == 0 && B == 1) || (A == 0 && B == 2) ... if(A == 0 && (B >= 0 && B <= 2)) 一定数量的时间。。。 有没有办法通过自动满足以下条件来减少此类示例: if((A == 0 &am

目标是通过发现变量之间的值依赖关系来优化大条件表达式,以便减少逻辑OR语句

假设我们有以下条件:

if((A == 0 && B == 0) ||  (A == 0 && B == 1) || (A == 0 && B == 2) ...
if(A == 0 && (B >= 0 && B <= 2))
一定数量的时间。。。 有没有办法通过自动满足以下条件来减少此类示例:

if((A == 0 && B == 0) ||  (A == 0 && B == 1) || (A == 0 && B == 2) ...
if(A == 0 && (B >= 0 && B <= 2))
可翻译为:

还有一点:

if((A == 0 && B == 0 && C == 0) ||  (A == 0 && B == 2 && C == 0) || (A == 0 && B == 4 && C == 0) || (A == 0 && B == 0 && C == 1) ||  (A == 0 && B == 2 && C == 1) || (A == 0 && B == 4 && C == 1))
将转变为:

if(A==0 && B%2==0 && C>=0 && C<=1)
如果(A==0&&B%2==0&&C>=0&&C
无法翻译为

if((A == 0 && B%2 == 0)
因为


等等

离散数学可以帮助你(如果你是一名大学生,你可能已经知道,否则请检查)。然而,这只会帮助你简化条件,而不是像“%”这样的东西。你可以有“混合”或更复杂的模式,
[[0,2],[0,4],[1,3],[1,5]
B%2=a
)或
(B+a)%3==1
。从您的示例来看,您似乎可以通过单个变量进行推理,因此测试一些预定义的模式(常数、范围、带gcd的模等)@Jarod42可以有复杂的模式,但不能与2个变量混合(
B%2=A
不可能发生),它始终链接到constant@Berto99看一看这里有两个选择:我有
(a==0&&B==6)
在这个条件下它可以工作,或者
B
将在值5处停止,所以没有问题。它可以持续到
B==6000
或更多,但我无法预测它。这是一个例子
if((A == 0 && B%2 == 0)
B == 6