2012-12-18 40 views
7

Tôi đang chơi một chút với Lua.Sự gia tăng trong Lua

Tôi đã xem qua đoạn mã sau đây có một vấn đề nghi ngờ:

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

Lua chạy chương trình mà không cần bất kỳ lỗi nhưng không in 2 6 15 như mong đợi. Tại sao ?

+2

làm thế nào để bạn chạy nó? Tôi nhận được '3 5 3' như mong đợi (như - bắt đầu một bình luận) bằng cách sử dụng Lua 5.1.4. –

Trả lời

6

LUA không tăng và giảm với ++--. Thay vào đó, -- sẽ bắt đầu nhận xét.

+0

Đúng, nhưng điều này không giải thích tại sao chương trình biên dịch và chạy. – prapin

+0

Nó biên dịch và chạy vì LUA không nhớ thiếu dấu chấm phẩy ở cuối dòng. Nó sẽ chỉ in ra 3 5 3. – annih

+2

@annih Nó có ý nghĩa tại sao mã này biên dịch, như đã nói trên câu trả lời này - bắt đầu một bình luận, vì vậy cần thiết mã của bạn là: 'a = 3; b = 5; c = a; 'Lưu ý rằng; là cần thiết trên đầu của tôi nếu bạn làm tất cả trong một dòng, như tôi làm – engineercoding

1

này sẽ cung cấp

vì dòng thứ 3 sẽ được đánh giá là c = a

tại sao? bởi vì trong lua, các bình luận bắt đầu bằng -. Do đó c = a-- * b ++; // một số tính toán

được đánh giá là hai phần;

  1. biểu thức: c = a
  2. nhận xét: * b ++; //// một số tính toán
2

Nếu bạn muốn 2 6 15 như đầu ra, hãy thử mã này:

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