2015-01-06 24 views
0

我必須使用if語句檢查3個方法的結果。如果method1爲true,那麼只需要調用method2,如果method2爲true,那麼只需要調用method3。目前我正在使用下面的代碼來達到這個目的。當存在多個條件時,「IF」語句中的執行順序

if(method1()) 
{ 
    if(method2()) 
    { 
     if(method3()) 
     { 
      cout << "succeeded"; 
     } 
     else 
     { 
      cout << "failed"; 
     } 
    } 
    else 
    { 
     cout << "failed"; 
    } 
} 
else 
{ 
    cout << "failed"; 
} 

我想只使用一個if語句並調用其中的所有3個方法。所以我在想以下方法。下面的代碼是否與上面的代碼相同或者會不同?

if(method1() && method2() && method3()) 
{ 
    cout << "succeeded"; 
} 
else 
{ 
    cout << "failed"; 
} 
+0

是的,'&&'使用短路(假設'方法'不會返回帶有'operator &&'重載的對象)。 – Jarod42

回答

2

結果將是相同的,因爲&&短路操作者。這意味着如果第一個操作數的計算結果爲false,則不會評估第二個操作數。