Given the code fragment:



int row = 10;
for (; row > 0;) {
    int col = row;
    while (col >= 0) {
        System.out.print(col + " ");
        col -= 2;
    }
    row = row / col;
}

What is the result?
A.

10 8 6 4 2 0

B.

10 8 6 4 2

C. AnArithmeticException is thrown at runtime
D. The program goes into an infinite loop outputting: 10 8 6 4 2 0. . .
E. Compilation fails

題解

第13行的for迴圈會在row變數的值大於0的時候執行。

第一次執行for迴圈,row = 10、col = 10,所以while迴圈會重複執行,依序印出「10 8 6 4 」……,直到col變數的值小於0。最後一次執行while迴圈時,col的值為-2,小於0了,所以跳出while迴圈。

接著改變row的值為10/-2=-5,然後準備進入下一次的for迴圈。然而,此時row小於等於0了,因此會直接跳出for迴圈。