2009-07-19 39 views
0

我不明白,從加速C++以下摘錄:解釋從加速℃下面++請

始於

因爲||是因爲 ||,==和 - ,

r == 0 ||的相對優先順序,所以是 。 r == rows - 1 || c == 0 ||如果我們把它所有的 子表達式放在圓括號中,它們的意思相同:

((r == 0 || r ==(rows - 1))|| c == 0)|| Ç==(列 - 1)

中去,直到

Otherwise, it does something else, which we must now define. 

我不明白這一點。你如何告訴我與你自己的話一樣?

+1

對於其他人,這是我的副本第25頁2.4.1.2節。 – 2009-07-19 09:37:38

回答

5

如果你有一系列你想評估的條件,比如說「如果x是1或y是2,那麼調用函數foo()」,那麼執行第二個測試就沒有意義了(y是2)如果你已經知道x是1. ||運算符的工作原理如下:

i(x == 1 || y == 2) { 
    foo(); 
} 

如果x == 1,則表達式y == 2將不會被計算,因爲它不是必需的。這被稱爲短路評估,如果評估費用昂貴,可以節省大量時間。

如果這不是你問的問題,請更明確地提出你的問題。

+1

我想你還應該指出,這意味着如果第一個表達式的計算結果爲true,那麼在第二個表達式中執行的任何計算都不會發生,因爲這會導致混淆錯誤。還是我誤會了? – pmr 2009-07-19 09:52:32

+0

我以爲那正是我所說的 – 2009-07-19 09:56:51

+0

我在想像x == 1 ||之類的東西++ y == 2.如果x等於1,y不會遞增。 – pmr 2009-07-19 10:08:06