TAG

首都機能移轉 (2) 歌詞 (2) 靠北文 (40) 戲言 (30) 糟糕 (7) ACG (23) Assembly (2) Boost (2) C (31) C++ (69) CMake (4) CSIE (67) Debian (34) Design_Pattern (2) Django (1) Eclipse (1) en_US (13) FFmpeg (3) FoolproofProject (26) FreeBSD (2) Git (4) GNU_Linux (65) IDE (5) Java (11) JavaScript (19) KDE (15) Khopper (16) KomiX (3) Kubuntu (18) Life (1) Lighttpd (2) Mac_OS_X (2) Opera (1) PHP (2) PicKing (2) Programing (21) Prolog (1) Python (7) QSnapshot (2) Qt (30) Qt_Jambi (1) Regular_Expression (1) Shell_Script (7) Talk (98) VirtualBox (7) Visual_Studio (13) Windows (18) zh_TW (36)

2008年2月11日 星期一

Short-circuit evaluation

不少語言在AND和OR的運算子上都有短路評算的機制,意即當評算結果已經確定時,就立刻回傳結果,停正評算。例如:
if False and f() :      // 由於評算結果一定為假,故f()不會執行
    ...
if True or f() :        // 評算結果必為真,故f()不會執行
    ...
也就是說AND只有在前方運算式為真時才會執行後方運算式,OR只有在前方運算式為假時才會執行後方運算式。
事實上shell常用的&&和||就是使用了這個特性,回想一下常用的指令:apt-get update && apt-get upgradetest -x /sbin/iptables || exit 1cd / && rm -rf *等。只是要注意的是,shell是以0為真,其他值為假。
這也是為什麼我反對把主程式宣告成void的原因之一,各位可以去試試void main的程式會回傳什麼。很多時候,判斷一個程式正常執行與否不是看執行結果,而是主程式的return值,如果使用void就很難判斷到底有沒有執行成功。

沒有留言:

張貼留言