Math 下面的表达式可以简化吗?
下面的表达式可以简化吗Math 下面的表达式可以简化吗?,math,algebra,Math,Algebra,下面的表达式可以简化吗 (M == null && C == null) || (M != null && C != null && D == C) 从数学上讲,我知道这是无法简化的,我检查了WolframAlpha以确认这一点,但我想知道是否有可能使用一个布尔逻辑运算符(&,|,^)来缩短条件。我试着想办法,但我有一个心理障碍。。。这真的可以缩短吗?如果假设D不是null,那么在第二个表达式中可以省略C!==null。如果假设D不是null,那
(M == null && C == null) ||
(M != null && C != null && D == C)
从数学上讲,我知道这是无法简化的,我检查了WolframAlpha以确认这一点,但我想知道是否有可能使用一个布尔逻辑运算符(&,|,^)来缩短条件。我试着想办法,但我有一个心理障碍。。。这真的可以缩短吗?如果假设D不是null,那么在第二个表达式中可以省略C!==null。如果假设D不是null,那么在第二个表达式中可以省略C!==空。(M==null和&C==null)| |(M!=null和&D==C)
这是可以做到的,因为从我在代码中看到的情况来看,D肯定有一个值,所以如果它为null,C就不会==到D。(M==null&&C==null)| |(M!=null&&D==C)
这是可以做到的,因为从我在代码中看到的,D肯定有一个值,所以如果它为空,C就不会==到D。在2个“规则”下,建议的表达式是真的: 规则#1:M和C都是空的,不管D的值是多少 规则#2:(2.a:M和C都不为空)和(2.b:D等于C) 如果D为null,新光的公式将失败(意味着C==null,这违反了规则#2a) 测试失败:M=not(null),C=null,D=null
(M == null && C == null) || (M != null && D == C)
false && true || true && true
false || true
true
((M == null) && (C == null)) || (D == C)
false && true || true
false || true
true
而Jake最初提出的表达式将被解析为:
(M == null && C == null) || (M != null && C != null && D == C)
false && true || (true && false && true)
false || false
false
J.Bruni的公式将在M或C的情况下失败!=空(断开条件1或2a)
测试失败:M=not(null),C=null,D=null
(M == null && C == null) || (M != null && D == C)
false && true || true && true
false || true
true
((M == null) && (C == null)) || (D == C)
false && true || true
false || true
true
根据2条“规则”,建议的表达式是正确的: 规则#1:M和C都是空的,不管D的值是多少 规则#2:(2.a:M和C都不为空)和(2.b:D等于C) 如果D为null,新光的公式将失败(意味着C==null,这违反了规则#2a) 测试失败:M=not(null),C=null,D=null
(M == null && C == null) || (M != null && D == C)
false && true || true && true
false || true
true
((M == null) && (C == null)) || (D == C)
false && true || true
false || true
true
而Jake最初提出的表达式将被解析为:
(M == null && C == null) || (M != null && C != null && D == C)
false && true || (true && false && true)
false || false
false
J.Bruni的公式将在M或C的情况下失败!=空(断开条件1或2a)
测试失败:M=not(null),C=null,D=null
(M == null && C == null) || (M != null && D == C)
false && true || true && true
false || true
true
((M == null) && (C == null)) || (D == C)
false && true || true
false || true
true
不,不能缩短 正如Ferdinand Liu所观察到的,您的表达在两种情况下都是正确的:
和M
都为空,或者C
和M
都不为空,C
和C
相等D
M
和C
,因此无法简化表达式
有趣但只是稍微相关的注释: 如果不需要检查
C
和D
是否相等,则表达式为
(M != null && C != null) || (M == null && C == null)
这可以简化为
!((M == null) ^ (C == null))
当
M
和C
具有相同的“空值”时,这是正确的。不,不能缩短
正如Ferdinand Liu所观察到的,您的表达在两种情况下都是正确的:
和M
都为空,或者C
和M
都不为空,C
和C
相等D
M
和C
,因此无法简化表达式
有趣但只是稍微相关的注释: 如果不需要检查
C
和D
是否相等,则表达式为
(M != null && C != null) || (M == null && C == null)
这可以简化为
!((M == null) ^ (C == null))
当
M
和C
具有相同的“null值”时,这是正确的。在某些语言中,null变量返回false,而非null变量单独使用时返回true,因此您也可以使用:(!M&&!C)|(M&&D==C)为什么D肯定有值?为什么不能为空?我在判断D在这种情况下的使用方式。如果为空,则为C=null&&D==C是绝对无用的,所以我假设D有一个值。如果不这样做,它就会失败。但是,如果它确实有一个值,这个方法会大大简化它的外观。(ok不太重要)在某些语言中,null变量返回false,而非null变量如果单独使用则返回true,因此您也可以使用:(!M&&!C)|(M&&D==C)为什么D肯定有值?为什么不能为空?我在判断D在这种情况下的使用方式。如果为空,则为C=null&&D==C是绝对无用的,所以我假设D有一个值。如果不这样做,它就会失败。但是,如果它确实有一个值,这个方法会大大简化它的外观。(没什么大不了的)