Mik*_*ike 5 lua language-design
有谁知道为什么"boolean not"的优先级高于==大多数编程语言的操作顺序?
在数学逻辑/模型理论中,是不是相反?我最近在Lua写了以下内容:
if not 1 == 2 then
print("hi")
end
Run Code Online (Sandbox Code Playgroud)
它不是打印"hi",因为not和之间的操作顺序==,这对我来说似乎很奇怪.
从来没有必要否定关系运算符,因为每个运算符都有一个相反的运算符.例如,我们有等式和不等式运算符(您的示例可能已经编写1 ~= 2).大多数编程语言中的一元运算符具有最高优先级,因为大多数时候会导致代码更像自然语言.
例如,not green and not blue应该是"既不是绿色也不是蓝色".一个非常低的优先级not将把它转变成not (green and not blue)更难以理解的东西.
您需要区分not 1 == 2和not (1 == 2)。后者的行为如您所料;前者是仅not应用于的一元1,可能产生零。
这与“数学/模型理论”没有什么不同。