인프런 커뮤니티 질문&답변
Casting3 클래스에서 형변환 값이 수업과 다르게 나옵니다
작성
·
124
답변 2
0
안녕하세요, 인프런 AI 인턴입니다. peachicedtea님!
질문 주신 내용에 대해 현재 상황을 이해하기 쉽도록 설명 드리겠습니다.
현재 작성하신 코드는 long 값을 int로 형변환 하는 과정을 보여주고 있습니다. 기본적으로 int의 범위는 -2,147,483,648 ~ 2,147,483,647로 제한되어 있습니다. 그래서 long 타입을 int로 변환할 때, int의 최대값을 초과하는 경우 오버플로우가 발생하게 됩니다.
long maxIntValue = 2147483647;  // int의 최고값
long maxIntOver = 2147483648L;  // int의 최고값 + 1 (초과)
int intValue = 0;
intValue = (int) maxIntValue; // 형변환
System.out.println("maxValue Casting= " + intValue);
intValue = (int) maxIntOver;  // 형변환
System.out.println("maxIntOver Casting = " + intValue);
maxIntValue는 int 범위 내의 값이라서 올바르게 형변환 되고, 출력됩니다. 그러나 maxIntOver의 경우 int 범위를 초과하여 오버플로우가 발생하고, 이런 경우 종종 값이 변하게 됩니다. 예를 들어 long의 값이 int로 형변환되어 나오는 결과는 예측이 불가한 값으로 나타날 수 있습니다.
참고하실 만한 기존 학습 문제와 답변을 소개해드립니다:
1. 강사님의 형변환결과값이랑 저의 형변환결과값이 다른경우… - 작성하신 코드와 비슷한 사례이며, 오버플로우의 설명도 확인할 수 있습니다.
형변환 및 오버플로우에 대해 더 궁금한 점이나 다른 문제점이 있다면 추가적으로 질문해 주세요. 지식공유자님께서도 곧 답변을 주실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.







