2013-08-06 38 views
3

什麼是寫作之間的區別:嵌套if和&&之間有什麼區別?

if(condition1 && condition2){ 
    //some code 
} 

和:

if(condition1){ 
    if(condition2){ 
     //some code 
    } 
} 

如果有的話,哪一個更好?

+0

那麼首先2線對4線+ 1塊對2塊...:秒,但第二個是diferent實際情況,而在第選項,你將必須擁有所有的真實,分離如果會給你自由處理它,只要你喜歡。 –

+0

+1,這個問題。 –

回答

7

差異主要在於可讀性和維護性。

2個邏輯條件的連接通常意味着它們之間存在語義關係。

要考慮的另一件事是範圍界定。嵌套0​​爲您提供了這方面的更多靈活性。

+0

對於範圍點的+1。 –

0

他們也是這樣做,並以相同的順序進行評估。

+0

所以編譯的代碼是相同的? – 2013Asker

+1

已編譯的代碼具有相同的語義 –

+2

@ 2013Asker - 來自高度優化的編譯器的編譯代碼將基本相同。 –

1

Syntaxically不同語義相同

1

每種方式之間沒有功能差異。編譯器很可能會將它們優化到相同的機器代碼(儘管不能保證)。

1

實際上,沒有區別; //some code只會在condition1condition2評估爲非零時執行(true)。

2

這會對else &嵌套else if條件產生影響,但除了可讀性以外沒有其他差別。

0

對於我來說沒什麼特別的,只是第二個讓代碼更加嵌套,我想避免一般情況。兩者都有相同的效果。

+0

這裏最差的答案。真丟臉! – pythonian29033

2

在第一種情況下,無論執行哪個代碼塊都會執行任何情況下評估爲真。 在第二個If語句中,可能會出現第一個條件等同於true的情況,但第二個條件不成立。並有可能爲開發者需要:
- 執行some code如果條件滿足,
- 然後more code其中第二條件滿足
- 無碼如果只有第二個條件得到滿足,而不是第一(例如:條件1 =球是不是死了,條件2 =球進入淨[其中more code會在足球比賽中註冊一個目標])

代碼:

if(condition1){ 
    //some code 
    if(condition2){ 
     //more code 
    } 
} 

哪個更好?

這取決於你正在使用它的

1

第一個,if(condition 1 && condition 2)什麼,只能包含一個單一的其他部分,提供你的代碼中的假設工作,這兩個條件是正確的,或者兩者都是錯誤的。在另一部分中,你可以有兩個部分,每個部分用於每個條件的失敗,從而增加了問題的範圍。

+1

在1-liner中,else部分並不意味着「所有條件都是錯誤的」,而是「至少有一個條件是錯誤的」。 –

2

其他人已經說過需要說什麼。它們基本相同。第一個是在一個班輪中進行狀態檢查。其次可以用於更詳細的檢查。第二個可以在調試時證明是好的。例如。只需在假情況下添加調試操作即可。以下是一個有趣的小例子,我能想到的

if("shell we meet today?" && "would you like some coffee?") 
{ 
    //Check both at the same time. 
    /* 
     *Sequential order of evaluation for && ensures that 
     *left hand side operand (condition) gets evaluated first 
     */ 
    //take some chocolates with the coffee 
} 

if("shell we meet today?") 
{ 
    //then 
    //if you want to figure out the options first 
    if("would you like some coffee?") 
    { 
     //take some chocolates with the coffee 
    } 
    else if("how about lunch?") 
    { 
      //Pizza? 
    } 
    else 
    { 
      //some fall back scenario? 
    } 
} 
相關問題