2016-10-14 2 views
0

변수를 추적 할 때마다 왜 z의 출력이 항상 -1인지 이해하려고합니다. 나는 동전을 세고 있고 for 루프를 설정하려고합니다. 그러나 나는 항상 z = -1로 인해 오류가 발생합니다.단순한 for 루프 // 이상한 출력 대답

for (var z:int = coins.length; z >= 0; z--); 
{ 
    trace(z); 
    trace(coins.length); 
} 

나는이 두 가지 변수를 얻을 출력의 대답은 다음과 같습니다

Z = -1 
coins.length = 3 

왜이 경우? 모든 때문에 내가 출력 상자에보고 있어요입니다

-1 
-1 
-1 
-1 
-1 
-1 
keeps repeating 

우리가 루프 로직에 의해 이동한다면, 변수 Z는 대신이 같은 안?

2 
1 
0 

무엇이 잘못 될 수 있습니까?

+0

편집 : 이제 코드 뒤에 그것을 코드를 디버깅 후,이 변수 z는 정의되지 말한다. z를 coins.length로 선언했을 때 값이 3 인 이유는 무엇입니까? – Zulu

답변

3

가 문제있다 : 세미콜론으로

for (var z:int = coins.length; z >= 0; z--); // the semicolon at the end. 

, 루프가 종료됩니다. 당신은 시체가없는 루프를 썼습니다. 그건 완벽하게 유효하고 잘 실행됩니다.

루프 후, 다음 코드는 한 번 실행된다

{ 
    trace(z); 
    trace(coins.length); 
} 

z -1, 즉 실행을 정지하는 루프를 발생시키는 루프의 마지막 값이기 때문이다. coins.length은 변경되지 않고 배열에 따른 값을가집니다.

for 루프 논리로 가야한다면 변수 z를 대신해서는 안됩니까?

2 
1 
0 

없음

, 그것은, 3에서 시작하기 때문에하지 2.

+0

좋은 catch @null. –

+0

OHHHHHHHHHHHHHHHHHHHH 맙소사! 정말 고맙습니다! 나는 매우 당혹 스럽다. 나는 다음 번에 정말로 두 번 확인해야 할 것이다. – Zulu