簡體   English   中英

嚴格的價值比較(小於/大於)

[英]Strict Value Comparison (less/greater than)

我很確定以下行為不正確(至少在我的腦海中)因為一些真實的瘋狂:

var x = 5;
0 < x < 10 // True, and returns true.
0 < x < 2 // False, and returns true.
0 < x < 0 // False, and returns false.

我的方法是,(0 <5)評估為true,(true <2)也評估為true(即1 <2)。 我用第三個語句對此進行了測試,這似乎證實了我的理論。 現在問的問題是:有沒有辦法讓這個“工作”沒有大量的額外代碼?

“......有沒有辦法讓這個'工作'沒有大量的額外代碼?”

當然,使用&& ......

(0 < x) && (x < 10)

如果需要,可以刪除括號。

正如您所注意到的,大多數編程語言都不會實現“之間”,因為您將以數學方式編寫它。 而是將比較分成兩部分,每次只比較兩個元素。

var x = 5;
0 < x && x < 10
0 < x && x < 2
0 < x && x < 2

因此,第一行顯示“零小於x且x小於十”。 如果您不確定表達式的評估順序,將作為分組。

(0 < x) && (x < 10)

問題源於<是二元運算符的事實。

這意味着其中一個<一次評估,而不是兩者。

這意味着無論評估的順序如何(IIRC是L到R),其中一個比較都是錯誤的。

因為這是CODE。

不是代數。

否則,巧妙地使用&&運算符,正如其他答案所討論的那樣,可以簡化您的問題。

暫無
暫無

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

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