Lua中操作顺序,非等于(==)与非(~)的先后执行是怎样的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计404个文字,预计阅读时间需要2分钟。
在许多编程语言中,not操作符确实具有比==操作符更高的优先级。这意味着在表达式中,not会先于==执行。在数学逻辑和模型理论中,not通常表示否定,它是一个反操作符。
以下是对您提供的Lua代码片段的简化:
luaif not (1==2) then print(hi)end
这段代码检查`1`是否不等于`2`,由于`1`确实不等于`2`,条件为真,因此会打印出hi。这里,not优先于==,所以先计算`1==2`,结果为`false`,然后`not false`的结果为`true`。
有没有人知道为什么“boolean not”比大多数编程语言的操作顺序具有更高的优先级而不是==?在数学逻辑/模型理论中,是不是相反?我最近在Lua写了以下内容:
if not 1 == 2 then print("hi") end
由于not和==之间的操作顺序,它不打印“hi”,这对我来说似乎很奇怪.
从来没有必要否定关系运算符,因为每个运算符都有一个相反的运算符.例如,我们有平等和不等运算符(你的例子可以写成1~ = 2).大多数编程语言中的一元运算符具有最高优先级,因为大多数时候会导致代码更像自然语言.例如,不是绿色而不是蓝色应该意味着“既不是绿色也不是蓝色”.一个非常低的优先级将把它变成不像(绿色而不是蓝色)的东西,这是很难理解的.
本文共计404个文字,预计阅读时间需要2分钟。
在许多编程语言中,not操作符确实具有比==操作符更高的优先级。这意味着在表达式中,not会先于==执行。在数学逻辑和模型理论中,not通常表示否定,它是一个反操作符。
以下是对您提供的Lua代码片段的简化:
luaif not (1==2) then print(hi)end
这段代码检查`1`是否不等于`2`,由于`1`确实不等于`2`,条件为真,因此会打印出hi。这里,not优先于==,所以先计算`1==2`,结果为`false`,然后`not false`的结果为`true`。
有没有人知道为什么“boolean not”比大多数编程语言的操作顺序具有更高的优先级而不是==?在数学逻辑/模型理论中,是不是相反?我最近在Lua写了以下内容:
if not 1 == 2 then print("hi") end
由于not和==之间的操作顺序,它不打印“hi”,这对我来说似乎很奇怪.
从来没有必要否定关系运算符,因为每个运算符都有一个相反的运算符.例如,我们有平等和不等运算符(你的例子可以写成1~ = 2).大多数编程语言中的一元运算符具有最高优先级,因为大多数时候会导致代码更像自然语言.例如,不是绿色而不是蓝色应该意味着“既不是绿色也不是蓝色”.一个非常低的优先级将把它变成不像(绿色而不是蓝色)的东西,这是很难理解的.

