안드로이드 개발 질문/답변
(글 수 358)
long MAX_PROGRESS = 2,735,005,015;//여기서 쉽표(,)는 알아보기 쉬워라고 적었습니다.
A. int a = (int) MAX_PROGRESS / 1024;
B. int b = (int)( MAX_PROGRESS / 1024);
이렇게 했을때 둘다 같은 값이 나와야 되는건 아닌지요?
A.의 경우 인트로 형변환후 1024로 나누고 a에 넣고
B.의 경우 값을 나누고 그값을 인트로 변환후 b에 넣고요..
안드로이드에 돌렸을때
a는 오버 플러가 나고
b는 정상적인 값이 들어갑니다.
제가 잘 못 알고 있는건가요?
아니면 월래 저렇게 나오는게 정상인건가요??
2012.09.07 13:21:32
int(32bit) 형의 범위
-2147483648 ~ 2147483647
long(64bit) 형의 범위
-9223372036854775808 ~ 9223372036854775807
MAX_PROGRESS는 long형
a에서 MAX_PROGRESS를 int형변환
int형이 지원하는 수의 한계를 확인해 보시면 아실듯 합니다.