21

我正在玩一点 Lua。

我遇到了以下具有意外行为的代码片段:

a = 3;
b = 5;
c = a-- * b++; // some computation
print(a, b, c);

Lua 运行程序没有任何错误,但没有2 6 15按预期打印。为什么 ?

4

8 回答 8

35

--开始单行注释,喜欢#//其他语言。

所以它相当于:

a = 3;
b = 5;
c = a
于 2012-12-18T22:56:12.323 回答
12

LUA 不会用++and递增和递减----而是开始评论。

于 2012-12-18T22:47:15.567 回答
5

lua中没有and--和and ++。所以你必须使用a = a + 1ora = a -1或类似的东西

于 2018-03-29T05:41:35.173 回答
3

如果您想2 6 15作为输出,请尝试以下代码:

a = 3
b = 5
c = a * b
a = a - 1
b = b + 1
print(a, b, c)
于 2016-08-10T23:49:27.443 回答
2

这会给

3 5 3

因为第 3 行将被评估为c = a.

为什么?因为在 Lua 中,注释以--. 因此,c = a-- * b++; // some computation被评估为两个部分:

  1. 表达:c = a
  2. 评论:* b++; //// some computation
于 2015-03-26T16:44:04.197 回答
1

您的 Lua 代码中有 2 个问题:

a = 3;
b = 5;
c = a-- * b++; // some computation
print(a, b, c);

一、Lua目前不支持自增。一种方法是:

c = a - 1 * b + 1
print(a, b, c)

二,--在 Lua 中是注释,所以 using a--just 翻译为a,注释为* b++; // some computation

三、//在Lua中不起作用,--用于注释。

;此外,在每行的末尾使用它也是可选的。

于 2021-08-24T18:21:35.693 回答
0

或者你可以做

本地默认值 = 0 本地最大值 = 100

while default < max do default = default + 1 print(default) end

于 2021-01-10T00:49:27.097 回答
-3

编辑:在 C# 中使用 SharpLua 在 lua 中递增/递减可以用速记方式完成,如下所示:

a+=1 --increment by some value
a-=1 --decrement by some value

此外,乘法/除法可以这样完成:

a*=2 --multiply by some value
a/=2 --divide by some value

如果将一个变量与另一个变量相加、相减、相乘或相除,则可以使用相同的方法,如下所示:

a+=b
a-=b
a/=b
a*=b

这更简单,更整洁,我认为不那么复杂,但不是每个人都会同意我的观点。

希望这可以帮助!

于 2020-05-30T06:54:21.770 回答