강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

peachicedtea님의 프로필 이미지
peachicedtea

작성한 질문수

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

형변환2 - 명시적 형변환

Casting3 클래스에서 형변환 값이 수업과 다르게 나옵니다

작성

·

120

0

[질문 내용]

강사님이 말씀하신 것 처럼 오버플로우가 발생하지 않고 값이 그대로 출력됩니다 ㅠ

*코드 입니다

code1.png.webp

*컴파일 결과입니다

result1.png.webp


답변 2

1

안녕하세요. peachicedtea님, 공식 서포터즈 y2gcoder입니다.

출력 대상이 다른 것 같습니다 🙂

둘다 intValue를 출력하도록 바꾸고 다시 테스트해보시겠습니까?

감사합니다.

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);

maxIntValueint 범위 내의 값이라서 올바르게 형변환 되고, 출력됩니다. 그러나 maxIntOver의 경우 int 범위를 초과하여 오버플로우가 발생하고, 이런 경우 종종 값이 변하게 됩니다. 예를 들어 long의 값이 int로 형변환되어 나오는 결과는 예측이 불가한 값으로 나타날 수 있습니다.

참고하실 만한 기존 학습 문제와 답변을 소개해드립니다:
1. 강사님의 형변환결과값이랑 저의 형변환결과값이 다른경우… - 작성하신 코드와 비슷한 사례이며, 오버플로우의 설명도 확인할 수 있습니다.

형변환 및 오버플로우에 대해 더 궁금한 점이나 다른 문제점이 있다면 추가적으로 질문해 주세요. 지식공유자님께서도 곧 답변을 주실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

peachicedtea님의 프로필 이미지
peachicedtea

작성한 질문수

질문하기