2012-11-12 118 views
1

可能重複:
Is short-circuiting boolean operators mandated in C/C++? And evaluation order?Objective C的條件語句評估

雖然研究的是iOS的問題,我發現了以下的答案:How to tell if UIViewController's view is visible

答案的細節不是重要的,但重要的是,它基本上說,如果你有一個條件聲明,看起來像下面...

if(X && Y) 
{ 
    //do stuff here 
} 

如果X爲假,Y永遠不會被評估。這是真的?可以確定編譯器不會將其優化爲if(Y && X)

+1

編譯器不會將其優化爲(Y && X)來回答問題的這一部分。 – jimpic

+1

不重複,因爲語言無關緊要。 – djechlin

回答

6

如果X爲假,它將返回false並且不會評估Y.這是一種優化。

+3

但不要與編譯器優化混淆。它是C/C++標準的一部分。如果'&&'超載,則不正確,請參閱http://stackoverflow.com/a/2108502/1187415。 –