강의로 돌아가기
-

long 을 int로 변환

long x3 = 2147483649099L;
int y3 = (int)x3;

이렇게 형변환을 하는 경우 y3는 int의 정수범위를 넘어가는데 오류가 뜨지 않네요
강제로 형변환하는 경우에는 그 크기에 상관없이 형변환이 가능한가요??

이상하게 System.out.println(x3); 의 경우 2147483649099 값이 나오는데 System.out.println(y3);로 실행을 시키면1099값이 나오네요

2 개의 답변
정두식_

강제 형변환을 하면 거기에 들어있는 값이 int로 표현할 수 있는 범위라는걸 보장할태니 무조건 변환하라는 의미이므로 오류가 뜨지 않습니다.

큰 그릇에 담긴걸 작은 그릇에 옮겨 담았으니 남은 숫자가 임의의 숫자 1099가 나오는것 같네요.

-

int가 나타낼수 있는 숫자는 2147483648 입니다.
long형의 숫자 2147483649099를 int형에 담을 경우 최대숫자2147483648에 담고 담고 담고....담아서 마지막에 남는 숫자가 1099입니다.

만약 long형의 숫자가 2147483649100으로 초기값을 주게 되면 출력되는 숫자는 1100이 됩니다.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.