[英]Can the following expression be simplified?
可以簡化以下表達式嗎?
(M == null && C == null) ||
(M != null && C != null && D == C)
從數學上講,我知道這無法簡化,因此我檢查了WolframAlpha以確認這一點,但是我想知道是否可以使用布爾邏輯運算符之一(&,|,^)來簡化該條件。 我試圖思考一些方法,但是我遇到了精神障礙……這實際上有可能縮短嗎?
在2個“規則”下,建議的表達式為true:Rule#1:無論D的值如何,M AND C均為空Rule#2:(2.a:M和C都不為空)AND(2.b:D等於C)
如果D為null,則Shingetsu的公式將失敗(意味着C == null,這違反了規則2a)
測試失敗:M =不(空),C =空,D =空
(M == null && C == null) || (M != null && D == C)
false && true || true && true
false || true
true
盡管傑克最初提出的表達式將被解析為:
(M == null && C == null) || (M != null && C != null && D == C)
false && true || (true && false && true)
false || false
false
如果M或C,J。Bruni的公式將失效!= null(制動條件1或2a)失敗的測試:M = not(null),C = null,D = null
((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
具有相同的“零度”時,這是正確的。
如果您假設D不為null,則在第二個表達式中可以省略C!== null。
(M ==空&& C ==空)|| (M!=空&& D == C)
可以這樣做是因為從我在您的代碼中看到的,D肯定有一個值,所以如果D為空,則C不會對D等於==。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.