Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- as2
- 수학정석
- watch
- Document Class
- flash cs3
- scaleform3
- 샌프란시스코
- scaleform
- ApplicationDomain
- 플래시
- Chart
- 집합의 연산
- as3.0
- DataBinding
- GDC
- 스케일폼
- 태그클라우드
- 클릭
- CLIK
- 강좌
- scaleform4
- as3
- addChild
- 애드온
- 형변환
- MMOKit
- flash player 10
- KGC 2013
- autodesk
- flash
Archives
- Today
- Total
scaleform.minarto.com
for(var i:uint 아무 생각 없이 쓰다가는 컴퓨터 다운된다... 본문
숫자를 0~10 까지 찍고 싶다고 치자
뭐, 당연히 아무 이상 없는 코드이다.
그럼 숫자를 역순으로 찍고 싶다고 하자
보통 이렇게 짜는 것이 일반적이다... 그러나 이것이 맞는 코드일까? 정답은 아니다...이다.
저렇게 했다가는 컴퓨터 다운되기 쉽상이다.
이 이유를 설명하기 위해서는 for 문과 uint 데이터타입에 대한 정확한 이해가 필요하다.
두번째 구문은 i는 10 부터 i-- 한 값이 0 이상이면 {} 안의 구문을 실행시킨다는 것이다. 여기서 놓쳐서는 안되는 것이 i-- 한 값이 0 이상이면 이다.
0 이상일 때까지 i-- 를 하란 것이 아니다.
결국 i-- 를 한 이후에 그 값을 0과 비교하게 된다. 바로 여기서 두번째 문제가 생긴다.
uint 데이터 타입은 0 ~ 4,294,967,295 (2^32-1) 까지의 정수를 나타낸다. - 값이 존재하지 않는 것이다. 만약 uint(-1) 처럼 음의 수를 캐스팅하게 되면 uint 의 최대치인 4,294,967,295 값이 나와 버린다.
다시 두번째 코드를 차근차근 살펴보면 i 가 0이 된 후 -1 이 되어 반복문을 탈출하는 것이 아니라 그렇게 되기 전에 uint 로 캐스팅되어 4,294,967,295 값이 되어버리고 마는 것이다.
이제 다 왔다. 문제를 알았고, 원인을 알았다. 그럼 해결을 해야지...
이 이슈를 해결하기 위해서는 뭐, 몇가지 방법이 있을 것이다. 하지만 가장 간단한건 i를 Number 또는 int 로 처리하는 것이다.
for(var i:uint=0; i<=10; i++)
{
trace(i);
}
{
trace(i);
}
뭐, 당연히 아무 이상 없는 코드이다.
그럼 숫자를 역순으로 찍고 싶다고 하자
for(var i:uint=10; i>=0; i--)
{
trace(i);
}
{
trace(i);
}
보통 이렇게 짜는 것이 일반적이다... 그러나 이것이 맞는 코드일까? 정답은 아니다...이다.
저렇게 했다가는 컴퓨터 다운되기 쉽상이다.
이 이유를 설명하기 위해서는 for 문과 uint 데이터타입에 대한 정확한 이해가 필요하다.
두번째 구문은 i는 10 부터 i-- 한 값이 0 이상이면 {} 안의 구문을 실행시킨다는 것이다. 여기서 놓쳐서는 안되는 것이 i-- 한 값이 0 이상이면 이다.
0 이상일 때까지 i-- 를 하란 것이 아니다.
결국 i-- 를 한 이후에 그 값을 0과 비교하게 된다. 바로 여기서 두번째 문제가 생긴다.
uint 데이터 타입은 0 ~ 4,294,967,295 (2^32-1) 까지의 정수를 나타낸다. - 값이 존재하지 않는 것이다. 만약 uint(-1) 처럼 음의 수를 캐스팅하게 되면 uint 의 최대치인 4,294,967,295 값이 나와 버린다.
for(var i:uint=10; i>=0; i--)
다시 두번째 코드를 차근차근 살펴보면 i 가 0이 된 후 -1 이 되어 반복문을 탈출하는 것이 아니라 그렇게 되기 전에 uint 로 캐스팅되어 4,294,967,295 값이 되어버리고 마는 것이다.
이제 다 왔다. 문제를 알았고, 원인을 알았다. 그럼 해결을 해야지...
이 이슈를 해결하기 위해서는 뭐, 몇가지 방법이 있을 것이다. 하지만 가장 간단한건 i를 Number 또는 int 로 처리하는 것이다.