2011-10-16 107 views
0

我有下面的代碼片段,我得到的輸出是4.請解釋我是否需要我= 2或0.我很困惑。以及輸出如何4?在for循環中繼續聲明,如果條件

int main() { 
    int i=2; 
    for(i=0;i<2;i++) { 
     i=i%3; 
     if(i==2) { 
      i++; 
      continue; } 
     else 
      ++i; 
    } 
    printf("%d",i); 
} 
+2

不要寫這樣的代碼任何東西,但教育的目的! –

+3

你是什麼意思?你聲明你的int i並賦值2,然後在下一行你賦0(for循環的初始化部分)。如何獲得4作爲輸出超出了我,但我得到2. – DeCaf

+3

如果你得到4,那麼你應該改變你的編譯器。 – quasiverse

回答

6

循環以i = 0開頭。 ifelse都是完全一樣的東西。增量i並繼續。
如果您使用了一點邏輯,整個塊可以減少到i++i = i % 3i < 2以來沒有效果)。

無法使用您發佈的代碼獲得4

+0

當我在gcc中執行這段代碼時,我只得到o/p爲4。你可以檢查。 –

+2

@BabannaDuggani:在'gcc(海灣合作委員會)4.6.1 20110819(預發佈)'輸出是2. IMO這是PEBKAC最好 – Sujoy

+1

朋友,我真的很抱歉,在for循環它是我<3和錯誤我寫我<2在論壇上。我知道了。謝謝。對不起,無法忍受。 –

0

輸出不能4爲您發佈的計劃,因爲當時的循環斷裂的i值會2,不4循環將正好運行一次

此外,您的代碼永遠不會輸入if塊,因爲條件爲i==2,在for循環內永遠不會出現這種情況,因爲到那時循環將退出。

所以,你的代碼是相同的:

int main() { 
    int i=2; 
    for(i=0;i<2;i++) { 
     i++; 
    } 
    printf("%d",i); 
} 
+0

當我在gcc中執行這段代碼時,我只得到o/p爲4。你可以檢查 –

+2

@BabannaDuggani:你重新檢查你的程序。比較你發佈的這個程序和你在你的電腦上運行的程序。看看他們是否完全一樣! – Nawaz

+2

朋友,我真的很抱歉,在for循環它是我<3和錯誤我寫我<2在論壇。我知道了。謝謝。對不起,無法忍受。 –