如果你不明白一個for循環,你可以隨時將其降低到簡單的語句:
for (init ; condition; increment)
body;
只是一個寫
init;
while (condition)
{
body;
increment;
}
所以,你的循環較短方式
for(i=0; i<=6; i++) {
for (j=1; j<=7-i; j++) {
Console.Write("*");
}
Console.Write("\n");
}
只是一種簡短的寫作方式
i = 0;
while (i <= 6)
{
j = 1;
while (j <= 7 - i)
{
Console.Write("*");
j++;
}
Console.Write("\n");
i++;
}
更清楚了嗎?
如果還不清楚,可以進一步降低。
while(condition)
body
只是寫
START:
if (!condition)
goto END;
body;
goto START;
END:
所以,你的循環只是很短的方式:
i = 0;
START_1:
if (!(i <= 6))
goto END_1;
j = 1;
START_2:
if (!(j <= 7 - i))
goto END_2;
Console.Write("*");
j++;
goto START_2;
END_2:
Console.Write("\n");
i++;
goto START_1;
END_1:
的是,現在清楚了嗎?
然後,它將執行'j ++'並再次執行'j <= 7-i'測試並打印星號,直到該條件爲假。然後它將寫入換行符並執行'i ++'並檢查'i <= 6'條件,然後根據需要多次運行內部循環等等。 – juharr
附註:確保你理解「編譯」和「執行/運行」之間的區別,因爲後期可能會混合這兩者。 –
爲什麼不直接使用調試器來遍歷代碼來查看它究竟做了什麼? (代碼在編譯時不會執行任何操作,除非進行編譯;您必須在執行任何操作之前執行它,差異是非常重要的。) –