2012-04-07 70 views
0

有我的書的鍛鍊,這讓我寫一個for循環相當於:有什麼方法可以跳過使用&& in條件語句?

for(i=0;(i<4) && (i<5);i++) 

,但沒有使用&&||運營商。

我想出了這樣一個解決方案:

for (i=0;;i++) 
     if((i<4)) 
      if((i<5)) 
       printf("Works!!!\n"); 
      else 
       break; 
     else 
      break; 

它的工作原理。由於我是C初學者,我想知道是否有比這更好的解決方案。

在此先感謝。

+6

你缺少簡單的一個:'爲(i = 0;我<4;我++)' – 2012-04-07 06:47:43

回答

8

您的&&結合了兩個條件,一個是相對於另一個在邏輯上較弱。如果整數小於4,則它必然小於5.因此(i<4) && (i<5)只能用(i<4)替換。

0

關於樣式的說明:總是使用花括號嵌套ifs,至少對於外部的花括號是一個好主意,尤其是對於遺漏的elses。這不會做你想做它:

if (Cond1) 
    if (Cond2) 
     DoSomething; 
else 
    DoSomethingElse; 

編譯器看到其他屬於Cond2。這不離開誤解任何房間:

if (Cond1) 
{ 
    if (Cond2) 
    { 
     DoSomething; 
    } 
} 
else 
{ 
    DoSomethingElse; 
} 
+0

即使你的編輯器(如果它的任何好處,像VIM)會看到這是錯誤的;當你突出顯示塊並重新加入時,它會修正縮進以顯示真實含義。 – Kaz 2012-04-07 19:17:34

+1

我不同意爲簡單代碼添加所有垂直雜波。如果(cond){if(cond2)DoSomething; } else {DoSomethingElse; }。如果一個條款需要支撐,那麼支撐另一個條款通常也很好。如果他們都是單表達式工作,那就留下來。 – Kaz 2012-04-07 19:19:13