2017-03-23 48 views
1

func()調用3個不同的函數f1(),f2(),f3()函數返回樣式邏輯並沒關係?

我的函數返回BOOL,邏輯與3層的功能,

是這樣行(正常的)?

BOOL func(...) 
{ 
    //... 
    return (f1() && f2() && f3()); 
} 
+3

風格是非常主觀的,詢問它會導致這個問題被關閉。至於邏輯,請記住布爾運算符'&&'和'||'使用[* short-circuit evaluation *](https://en.wikipedia.org/wiki/Short-circuit_evaluation)。所以在你的情況下,如果第一個函數返回'false',那麼函數的其餘部分將不會被調用。你能否詳細說明你顯示的代碼有哪些問題?你爲什麼要發佈這個問題?你只要求我們*審查*你的代碼?還有其他問題嗎?你不明白的東西? –

+0

我想驗證我的代碼,以防止錯誤。 – sailfish009

回答

3

請注意,內置operator &&執行短路評估;即如果f1()返回falsef2()f3()將不會被調用。

如果這對您的意圖很好,那麼代碼看起來很好。

+0

對我來說很好。 – sailfish009

0

無論f1,f2和f3返回什麼,這都是非常好的有效語法。但是,如果這些函數中的任何一個輸出可能會轉化爲錯誤的東西,則整個表達式將評估爲false。

0
return (f1() && f2() && f3()); 

如果呼叫到f1()返回值是假f2()f3()不會被調用。

+0

沒關係。 f1()必須返回true。那麼必須運行f2(),等等。 – sailfish009