答案是否定的:
考虑A || B && C || D
它具有真值表:
A | B | C | D |
0 | 0 | 0 | 0 | 0
0 | 0 | 0 | 1 | 0
0 | 0 | 1 | 0 | 0
0 | 0 | 1 | 1 | 0
0 | 1 | 0 | 0 | 0
0 | 1 | 0 | 1 | 1
0 | 1 | 1 | 0 | 1
0 | 1 | 1 | 1 | 1
1 | 0 | 0 | 0 | 0
1 | 0 | 0 | 1 | 1
1 | 0 | 1 | 0 | 1
1 | 0 | 1 | 1 | 1
1 | 1 | 0 | 0 | 0
1 | 1 | 0 | 1 | 1
1 | 1 | 1 | 0 | 1
1 | 1 | 1 | 1 | 1
如果有可能依次评价也必须是最后的表达这将是两种情况之一:
案例1:
X || Y
苏ch Y
是A,B,C,D
之一,X是任何顺序布尔表达式。
现在,由于在A,B,C,D
没有变量,其中每当该变量为真整个表达式为真,没有:
X || A
X || B
X || C
X || D
都不可能在表达式中最后操作(任何X)。
情况2:
X && Y
:使得Y
是A,B,C,D
一个,X是任何顺序的布尔表达式。
现在,由于在A,B,C,D
没有可变其中整个表达式为假每当该变量为假,没有:
X && A
X && B
X && C
X && D
都不可能在表达式中最后操作(任何X)。
因此你不能写这样(A || B) && (C || D)
。
的原因,你能为一些表达式做到这一点,如:A && (B || C)
成为C || B && A
是因为表达可以递归构建出具有上述两种属性之一的表达式:
IE。
真值表A && (B || C)
是:
A | B | C |
0 | 0 | 0 | 0
0 | 0 | 1 | 0
0 | 1 | 0 | 0
0 | 1 | 1 | 0
1 | 0 | 0 | 0
1 | 0 | 1 | 1
1 | 1 | 0 | 1
1 | 1 | 1 | 1
,我们可以很快看到有一个是假的,只要A是0,所以我们的表达可能是X && A
财产。
接下来我们就来了真值表,看看只,其中A是1行是原始:
B | C
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 1
其中有这是真的,每当B为1的属性(或C,我们可以在这里选择)。所以,我们可以写出表达
X || B
,整个表达式为X || B && A
然后我们再减少表,其中B为0的部分,我们得到:
C
0 | 0
1 | 1
X是不仅仅是C所以最终的表达是C || B && A
定义“顺序”。为什么'A &&(B || C)'不是“连续的”? –
B || C首先被计算。我无法使用任何操作顺序 – user906153
您所需要的只是'C || B && A'不是'A && C || B && A'。 – Paulpro