Posted on 2010-01-04 11:13
Hero 閱讀(1149)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
DOS
CODE: [Copy to clipboard]
@echo off
echo 早上好!
goto :noon
echo 該睡覺(jué)了!&pause>nul
:noon
echo 中午好!
:night
echo 晚上好!
pause>nul
執(zhí)行結(jié)果:
CODE: [Copy to clipboard]
@echo off
echo 早上好!
call :noon
echo 該睡覺(jué)了!&pause>nul
:noon
echo 中午好!
:night
echo 晚上好!
pause>nul
執(zhí)行結(jié)果:
Quote: |
早上好! 中午好! 晚上好! [按任意鍵] 該睡覺(jué)了! [按任意鍵] 中午好! 晚上好! [按任意鍵退出] |
|
從上邊兩個(gè)例子我們已經(jīng)可以很明白的看出call和goto的異同點(diǎn)了:
相同點(diǎn):call和goto都可以將流程跳轉(zhuǎn)到標(biāo)簽處。
不同點(diǎn):goto將流程跳轉(zhuǎn)到標(biāo)簽處后,程序從標(biāo)簽處開(kāi)始執(zhí)行到結(jié)束,整個(gè)流程執(zhí)行完畢;call將流程跳轉(zhuǎn)到標(biāo)簽處后,程序從標(biāo)簽處開(kāi)始執(zhí)行到結(jié)束[1],然后會(huì)跳轉(zhuǎn)回執(zhí)行call的下一條語(yǔ)句,直到整個(gè)流程執(zhí)行完畢;所以call并不會(huì)像goto那樣打亂了流程,它只是中斷了當(dāng)前流程,但仍保證整個(gè)流程按原順序進(jìn)行。
[1]在第二個(gè)例子中我們可以在標(biāo)簽后適當(dāng)?shù)牡胤秸{(diào)用goto :eof,使流程提前結(jié)束,提前將流程轉(zhuǎn)移call的下一條語(yǔ)句:
CODE: [Copy to clipboard]
@echo off
echo 早上好!
call :noon
echo 該睡覺(jué)了!&pause>nul
:noon
echo 中午好!
goto :eof
:night
echo 晚上好!
goto :eof
pause>nul
執(zhí)行結(jié)果已和例二有所不同,先顯示:
按任意鍵后接著顯示"中午好!",到goto :eof后退出!
很顯然,如果在例一中加入goto :eof則只是提前結(jié)束了流程。