今天在擼lua的時候發現一個奇怪的問題
local a = true
print(a == true and false or true)
這樣無論a是true還是false,輸出結果都是true
我把代碼改成了
local a = true
print(not a )
就好了
一直沒想通為什么第一種的三目運算式是不行的呢?
uj5u.com熱心網友回復:
這個就是涉及一個運算子優先級的關系,我給你加上括號你看下 (((a == true) and false) or true) 這樣就相當于(a or true),不管a是什么,這個運算式都是回傳trueuj5u.com熱心網友回復:
https://blog.csdn.net/fightsyj/article/details/84559328uj5u.com熱心網友回復:
運算子優先級的問題uj5u.com熱心網友回復:
or trueuj5u.com熱心網友回復:
lua 是沒三目運算子的,由“and” 和“ or” 組成的實際上偽三目的,主要是利用lua “and” 和 “or” 的特性的,樓主寫的運算式確實就是回傳定值true。uj5u.com熱心網友回復:
A and B or C:B不能為falsehttps://blog.csdn.net/fightsyj/article/details/84559328
uj5u.com熱心網友回復:
這個問題其實網上有答案,就是優先級的問題https://blog.csdn.net/coffeecato/article/details/77546887
uj5u.com熱心網友回復:
運算子優先級uj5u.com熱心網友回復:
優先級的問題,,,uj5u.com熱心網友回復:
要習慣加上括號,不然經常會偶然出問題......轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/30659.html
標籤:Cocos2d-x
上一篇:求幫助
下一篇:物件池
