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