2012-12-18 4 views
7

나는 루아로 조금 놀고 있습니다.루아 증분

나는 예기치 않은 동작이 다음과 같은 코드를 건너 왔어요 :

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

루아가 오류없이 프로그램을 실행하지만, 예상대로 2 6 15을 인쇄하지 않습니다. 왜 ?

+2

당신이 그것을 어떻게 실행합니까를? 루아 5.1.4를 사용하여'3 5 3'을 예상대로 (as - comment를 시작) 얻는다. –

답변

6

LUA는 ++--으로 증가 및 감소하지 않습니다. --은 대신 주석을 시작합니다.

+0

사실, 그러나 이것은 프로그램이 컴파일되고 실행되는 이유를 설명하지 않습니다. – prapin

+0

LUA가 줄 끝에서 누락 된 세미콜론을 신경 쓰지 않으므로 컴파일되고 실행됩니다. 그것은 단지 3 5 3을 프린트 할 것입니다. – annih

+2

@annih이 코드가 왜이 컴파일에서 컴파일되는지 이해할 수 있습니다 - 코멘트를 시작하므로 코드는 매우 중요합니다 :'a = 3; b = 5; c = a;'주의하십시오; 내가 한 것처럼 한 줄에 모두 쓰면 내 머리 꼭대기에 필요하다. – engineercoding

1

이유 :

그래서 그것은 동등입니까? 왜냐하면 루아에서는 주석이 -로 시작하기 때문입니다. 따라서 c = a-- * b ++; // 일부 계산

은 두 부분으로 평가됩니다.

  1. 표현은 : C는
  2. 주석 = B *를 ++; //// 일부 계산
2

당신이 출력으로 2 6 15을 원하는 경우에,이 코드를 시도 :

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