簡體   English   中英

可以簡化以下表達式嗎?

[英]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)觀察到的那樣,您的表達在兩種情況下是正確的:

  • MC均為空,或
  • MC 都不為空,並且CD相等。

您需要同時檢查MC ,因此無法簡化表達式。


有趣但僅有一點相關的注釋:

如果您不需要檢查CD是否相等,則表達式為

(M != null && C != null) || (M == null && C == null)

可以簡化為

!((M == null) ^ (C == null))

MC具有相同的“零度”時,這是正確的。

如果您假設D不為null,則在第二個表達式中可以省略C!== null。

(M ==空&& C ==空)|| (M!=空&& D == C)
可以這樣做是因為從我在您的代碼中看到的,D肯定有一個值,所以如果D為空,則C不會對D等於==。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM