자바에서 형변환 질문이요

자바에서 형변환 질문이요

작성일 2023.04.27댓글 2건
    게시물 수정 , 삭제는 로그인 필요

public class Example_1 {
public static void main(String[] args) {
int a = 1_000_000;
int b = 2_000_000;
long c = (long)a*b;
System.out.println(c);
}
}

형변환을 저렇게 말고

public class Example_1 {
public static void main(String[] args) {
int a = 1_000_000;
int b = 2_000_000;
long c = (long)(a*b);
System.out.println(c);
}
}
이렇게 하면 왜 안되나요?
int 타입과 int타입의 연산 결과는 int 타입이지만 long타입으로 형변환을 했는데.. 왜 오버플로우가 발생하는지 궁금합니다.



profile_image 익명 작성일 -

첫 번째 예제에서는 a와 b의 곱셈이 이루어지기 전에 a가 long 타입으로 변환됩니다. 따라서 a * b의 결과는 long 타입이며 오버플로우가 발생하지 않습니다.

하지만 두 번째 예제에서는 a * b의 결과가 먼저 계산되고 그 결과가 long 타입으로 변환됩니다. a * b의 결과는 int 타입이므로 오버플로우가 발생합니다. 이후에 long 타입으로 변환되어도 이미 오버플로우가 발생한 상태이므로 정확한 결과를 얻을 수 없습니다.

따라서 첫 번째 예제처럼 곱셈 연산 전에 피연산자 중 하나를 long 타입으로 변환하는 것이 중요합니다.

profile_image 익명 작성일 -

a, b는 둘 다 int형이고 a*b도 타입이 int형이 됩니다. a*b의 결과가 int의 범위를 넘어서기 때문에 이것은 오버플로우를 일으키게 됩니다. 반면에 첫 번째는 a를 long형으로 캐스팅을 하기 때문에 결과는 long형이 되고 이것은 오버플로우를 일으키지 않습니다.

자바 형변환 질문이요

제가 알기로 자바에서 int형이 char형으로 형변환될 수 없다고 알고있는데요 char c = 97; 이라는 문장이 가능한 이유를 알고싶습니다. 안녕하세요. char c = 97; 문장 대신 int...

자바 객체 형변환!! 질문있습니다!!

질문) equals()오버라이딩 하는부분중 Point p = (Point) obj부분 이걸 잘모르겠어요.. Q.저 형변환시... 자바에서 모든 클래스는 Object를 상속받도록...

자바 형변환 질문

... 문제 형변환을 하면 결과가 어떻게 나오는지랑 왜 그렇게 나오는지 설명해주세요...ㅠㅠ 자바를... 7) =17 참고하시고 궁금하신 부분 있으시면 질문주세...

자바 형변환 질문

... 출력값에 -1이라고 뜨는데 선생님께 여쭤봤더니 자바에서 형변환 할 때는 안에서 코드로 인식을해서 오류임에도 값이 뜨는데 의미가 없는거라고...

자바 형변환 질문해봅니다(왕초보)

... return p.x == this.x && p.y == this.y; } ㅡ질문ㅡ 이때... 자바에는 다형성이라는 특성이 있습니다. 다형성... 중요한건, B타입 객체가 형변환을 한다고해서...

자바 형변환 질문.

... (double)로 형변환하면 double변수에 저장이 되어어서 출력이... Double이나 Integer는 클래스 타입입니다.. 당연히 형변환이 안 되죠..

자바 형변환 질문입니다!

자바에서 int a,b; 초기값이 선언됐다는 가정하에 long c1=(long)(a*b); 하고 byte a = 10; byte b = 20; byte c =(byte)( a + b); 둘다 오류없이 형변환 가능한가요..?? 그리고...

자바 형변환 질문 .

... 형변환의 용도가 궁금합니다 . 2. public class SumTest { public static void main(String... 이게 자바에서 실질적인 업무를 해야할때 유니코드의 값을...