for循環(huán)的格式為:
for(【初始化表達(dá)式】;【條件表達(dá)式】;【迭代表達(dá)式 】)
{
//語(yǔ)句塊
}
其中:【初始化表達(dá)式】;【條件表達(dá)式】;【迭代表達(dá)式 】都是可選的,【條件表達(dá)式】必須是一個(gè)布爾表達(dá)式。
執(zhí)行步驟為:
第一步:開始執(zhí)行初始化表達(dá)式,只執(zhí)行一次。
第二步:開始執(zhí)行條件表達(dá)式(若為空,則返回true),若為true,則執(zhí)行大括號(hào)中的語(yǔ)句;若為false,則直接跳到for的結(jié)束點(diǎn)。
第三步:開始執(zhí)行迭代表達(dá)式+條件表達(dá)式。
第四步:若條件表達(dá)式為true,則執(zhí)行大括號(hào)中的語(yǔ)句,返回第三步;若為false,則控制點(diǎn)轉(zhuǎn)到for的結(jié)束點(diǎn)。
下面我們通過多個(gè)例子來加深理解:
例子一:
for (int num = 1; num < 0; num++)
{
Response.Write(num);
}
結(jié)果:空。
原因:先執(zhí)行int num = 1;再執(zhí)行num < 0;這時(shí)num < 0 返回false,退出循環(huán)。
例子二:
Response.Write("結(jié)果:<br />" );
for (int num = 1; num < 5; ++num)
{
Response.Write(num + "<br />");
}
中第三部分換成:num++其結(jié)果也是:
原因:不要老是被i++,++i的問題搞混,在這里用起來一樣,另外不要寫類似int i = 0;i = i ++;i = ++i的寫法。i = i++是啥呢?它就等價(jià)于:
int tmp = 0;
i = 1;
i = tmp;
你寫些讓自己都可能搞混的代碼,有必要嗎?
例三:
for (int i = 9; i-- > 0; )
{
Response.Write(i);
}
這種感覺意義也不大,真不知道誰(shuí)會(huì)這么寫。根據(jù)上面所寫的執(zhí)行順序,先執(zhí)行int i = 9;然后就執(zhí)行i-->0;那么這里i=8了,輸出時(shí)也從8開始。
綜上,等價(jià)于:
for (int i = 10; i-- > 0; )
{
Response.Write(i);
}
例子四:
for (int i = 9,j = 1; i > 0&&j < 5; i--,j++)
{
Response.Write(i + "*" + j + "=" + i*j + "<br />");
}
for循環(huán)支持多表達(dá)式,上面的執(zhí)行結(jié)果是:
例子五:
for(;;)
{
}
這是個(gè)死循環(huán),因?yàn)楫?dāng)條件表達(dá)式為空或?yàn)閠rue時(shí)都將執(zhí)行大括號(hào)中的語(yǔ)句。