直譯器的優化結果?
赫然發現這兩種 python (包括 python3) 敘述不會引發錯誤:
print(True or asdfasdf)
print(False and asdfasdf)
asdfasdf 是沒定義或是會 keyError 的 dictionary。
這顯然跟真值表的運算結果有關,
True or 和 False and 陳述後面都不計算了。
這叫做驟死式判斷 滿常有這種寫法的 C 也都這樣用 像是
func(char* ccc) {
if( ccc && ccc[0] == '1')
...
}
不這樣做直接 ccc[0] 取值的話 要是遇到 NULL pointer 就 runtime error 了
一樓學長給點面子好嗎? XD
好啦我缺乏常識 Orz