有沒有更好的方法來檢查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 - Z)在勒柯克
- 3. 如何繪製(x,y,z)
- 4. 三個正數x,y,z的組合使x + y,x-y,y + z,y-z,x + z和x-z爲完美正方形
- 5. $ x * $ y = $ z爲零
- 6. 簡化Z = X ^(X << Y)函數的逆函數
- 7. 如何在z秒後x> x + y:?
- 8. 如果'z'中'x'和'y':
- 9. 按位AND x&y = z,x =?
- 10. Excel:如何爲(x,y)的不同值寫z = f(x,y)
- 11. x,y,z和帶有x(),y(),z()的點的模板函數
- 12. 序言,測試(X,Y,Z): - Y是X + Z
- 13. pow(X,Y,Z)<=> Z = X^Y加上
- 14. 查找方程y = Y(x)的從兩個表面Z = Z(X,Y)的交點
- 15. Unity C#實例化「位置+ x,y,z」?
- 16. 地圖和用(X,Y),(X,Z)和(Y,Z)對和相關的X工作,Y或Z座標
- 17. 優化哪裏其中x在Y或Z y中
- 18. 如何獲取X,Y,Z軸值?
- 19. LWJGL如何使用x,y,z移動
- 20. 如何在matlab中繪製x,y,z?
- 21. R:4D plot,x,y,z,colors
- 22. 輪廓與Z(X,Y)
- 23. Matlab 4dplot(x,y,z,t)
- 24. 爲什麼graphicsDevice.viewport(x,y,z,w)使用x作爲x和y?
- 25. PostgreSQL:如果column1包含x,y或z將column2設置爲x,y或z
- 26. 以編程方式將X w/5(Y || Z)擴展爲「X Y」〜5 || 「X Z」〜5
- 27. JavaScript函數「X-Y = Z」返回Y作爲Z值
- 28. 如何表達∀X∃Y r(X,Y),∃XŸY r(X,Y)?
- 29. MVD3的實際例子:(傳遞性)如果X↠Y和Y↠Z,那麼X↠(Z-Y)
- 30. 在Matlab中繪製四個變量u = f(x,y,z),範圍爲x,y,z
簡化這個規則是:'x || (y && z)==(x || y)&&(x || z)'請參閱:https://en.wikipedia.org/wiki/Boolean_algebra –
嘗試繪製真值表。 – Dan