有没有更好的方法来检查x && (!y || (y && z))
是否为真? 我想我可以为此创建一个功能并执行诸如x && not_or_and(y, z)
之类的操作来减轻一些痛苦。但是,这是我能做的吗?如何简化x &&(!y ||(y && z))
回答
忽略了表达的副作用,这在逻辑上等同
x && (!y || z)
额外检查你在做(y && z)
为y
是多余的,因为如果你去的地方,你需要检查点部分表达式,你已经确定!y
是假的,这意味着y
是真实的。
考虑到副作用,是不是因为可能的编译器优化而不可预知?我想任何好的编译器都会优化它。 –
@SergeyTachenov:我不确定你想说什么。但是我暗示的(当我说“忽略副作用”时),可能是'x','y'和'z'不是简单的布尔。例如,它们可以是返回布尔的函数调用。这些功能可能有副作用。例如,如果'x'为真,并且'y'是返回'true'的函数调用,那么'y'将在OP代码中被调用两次,但在我的代码中只会调用一次。 –
@Sergey,如果标记'y'是一个返回bool的函数调用,那么该函数可能在原始表达式中调用过两次,而不会在“优化”版本中调用两次。只要没有&&和||的操作符重载,这两种表达式评估都是可预测的。因此,当在令牌y中调用函数两次而不是一次时可能会有副作用。 – franji1
- 1. [] .concat([“x”,“y”],“z”) - >如何获得[[“x”,“y”],“z”]而不是[“x”,“y” , “Z”]?
- 2. 三个正数x,y,z的组合使x + y,x-y,y + z,y-z,x + z和x-z为完美正方形
- 3. $ x * $ y = $ z为零
- 4. 简化Z = X ^(X << Y)函数的逆函数
- 5. 如何在z秒后x> x + y:?
- 6. Excel:如何为(x,y)的不同值写z = f(x,y)
- 7. 序言,测试(X,Y,Z): - Y是X + Z
- 8. x,y,z和带有x(),y(),z()的点的模板函数
- 9. pow(X,Y,Z)<=> Z = X^Y加上
- 10. 查找方程y = Y(x)的从两个表面Z = Z(X,Y)的交点
- 11. Unity C#实例化“位置+ x,y,z”?
- 12. 地图和用(X,Y),(X,Z)和(Y,Z)对和相关的X工作,Y或Z坐标
- 13. 优化哪里其中x在Y或Z y中
- 14. 如何在matlab中绘制x,y,z?
- 15. R:4D plot,x,y,z,colors
- 16. 轮廓与Z(X,Y)
- 17. Matlab 4dplot(x,y,z,t)
- 18. PostgreSQL:如果column1包含x,y或z将column2设置为x,y或z
- 19. JavaScript函数“X-Y = Z”返回Y作为Z值
- 20. 如何表达∀X∃Y r(X,Y),∃XŸY r(X,Y)?
- 21. 计算log(x /(y * z))或log(x)-log(y)-log(z)会更好吗?
- 22. 对于字符串,[x,y,z] .join('')是否比x + y + z更快?
- 23. 在Matlab中绘制四个变量u = f(x,y,z),范围为x,y,z
- 24. 在Ruby中,%w(x y z)和%w [x y z]之间有区别吗?
- 25. 将张量流矩阵的形状从(x,y,z)转换为(1,x,y,z)
- 26. C#:如何将3D X Y和Z位置转换为2D X和Y位置?
- 27. Java字符串:如何获取X,Y从一个字符串 “VT X,Y,Z”
- 28. AngularJS:`{{x +','+ y}}与`{{x}},{{y}}`
- 29. 如何找到最接近点p(x,y,z)发出的矢量v(x,y,z)的椭球的切线?
- 30. 冷凝X,Y由Y
简化这个规则是:'x || (y && z)==(x || y)&&(x || z)'请参阅:https://en.wikipedia.org/wiki/Boolean_algebra –
尝试绘制真值表。 – Dan