Lua 面试题 目录

Lua 的运算符优先级是怎样的?

推荐答案

Lua 的运算符优先级从高到低如下:

  1. ^(幂运算)
  2. not#(取长度)、-(负号)
  3. *///(整除)、%(取模)
  4. +-(减号)
  5. ..(字符串连接)
  6. <><=>=~===(比较运算符)
  7. and
  8. or

本题详细解读

1. 运算符优先级的作用

运算符优先级决定了表达式中各个运算符的执行顺序。优先级高的运算符会先被计算,优先级低的运算符会后被计算。如果优先级相同,则按照从左到右的顺序计算。

2. 具体运算符的优先级

  • ^(幂运算):这是 Lua 中优先级最高的运算符,用于计算幂次方。例如,2 ^ 3 的结果是 8

  • not#(取长度)、-(负号):这些运算符的优先级仅次于幂运算。not 用于逻辑取反,# 用于获取表或字符串的长度,- 用于取负值。

  • *///(整除)、%(取模):这些运算符用于数学运算。* 是乘法,/ 是除法,// 是整除(返回商的整数部分),% 是取模(返回除法的余数)。

  • +-(减号):这些运算符用于加法和减法运算。

  • ..(字符串连接):用于连接两个字符串。例如,"Hello" .. " World" 的结果是 "Hello World"

  • <><=>=~===(比较运算符):这些运算符用于比较两个值的大小或相等性。~= 表示不等于,== 表示等于。

  • and:逻辑与运算符,用于判断两个条件是否同时为真。

  • or:逻辑或运算符,用于判断两个条件是否至少有一个为真。

3. 示例

4. 注意事项

  • 使用括号可以改变运算的优先级。例如,(2 + 3) * 4 的结果是 20,而不是 14
  • 在复杂的表达式中,建议使用括号来明确运算顺序,避免因优先级问题导致的错误。
纠错
反馈