2013-08-18 52 views
1

我試圖在C中處理一個二維數組。我嘗試了兩個嵌套for循環,但似乎這兩個循環分開執行。我期望內部循環對外部循環的每個循環循環八次,從而導致外部循環數量是循環總數的8倍。嵌套循環似乎由於某種原因分開執行

作爲簡化測試中,我嘗試這樣做:

#include <stdio.h> 
int main() { 
    int x = 0; 
    int y = 0; 
    for (; x < 7; x++, printf("(%d,%d)", x, y)) { 
     for (; y < 8; y++, printf("(%d,%d)", x, y)) { } 
    } 
} 

這導致以下結果:

(0,1)(0,2)(0,3)(0,4) (0,5)(0,6)(0,7)(0,8)(1,8)(2,8)(3,8)(4,8)(5,8)(6,8)

有人請向我解釋爲什麼會發生這種情況嗎?謝謝。

回答

3

原因很簡單:您不要在內部循環中重新初始化y變量:當它達到8時,它保持這種方式,內部循環不會再執行。將您的代碼更改爲:

#include <stdio.h> 
int main() { 
    for (x=0; x < 7; x++, printf("(%d,%d)", x, y)) { 
     for (y = 0; y < 8; y++, printf("(%d,%d)", x, y)) { } 
    } 
} 
+0

哦。非常感謝!那只是我知道我必須犯的一種明顯的錯誤。再次感謝! –

+0

沒問題,很高興我能幫到你。如果答案有效,請將其標記爲已接受。 – alexsh