操作顺序(==与非)

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和之间的操作顺序==,这对我来说似乎很奇怪.

Mud*_*Mud 5

从来没有必要否定关系运算符,因为每个运算符都有一个相反的运算符.例如,我们有等式和不等式运算符(您的示例可能已经编写1 ~= 2).大多数编程语言中的一元运算符具有最高优先级,因为大多数时候会导致代码更像自然语言.

例如,not green and not blue应该是"既不是绿色也不是蓝色".一个非常低的优先级not将把它转变成not (green and not blue)更难以理解的东西.


use*_*421 1

您需要区分not 1 == 2not (1 == 2)。后者的行为如您所料;前者是仅not应用于的一元1,可能产生零。

这与“数学/模型理论”没有什么不同。

  • 在 Lua 中,“not 1”的计算结果为“false”,与“2”不同,因此没有输出。 (2认同)
  • “你需要区分”?OP 显然知道这一点;这就是这篇文章的明确内容。您使用括号来创建他提到的优先级。问题不是“如何让`==`具有比`not`更高的优先级”,而是“为什么它在编程语言中没有比`not`具有更高的优先级”? (2认同)