문득 c나 cpp에서도 그런진 모르겠지만..
(type binding을 지원하는 cpp는 되지 않을까?)
일단 타입이 강하게 묶여있기 때문에
int 형으로 계산을 하고 나서 long 형으로 변환하는 건 이미 데이터가 손실 되어 의미가 없어진다.
무조건 계산 전에는 형 변환을 해주고 시작하는 것이 옳다(!).
그리고 두개의 크기가 다른 타입을 계산할 경우 자동으로 큰 쪽으로 맞추어지나
정수형은 int 형이 최고 타입으로 long 형으로는 자동적으로 크기가 키워지진 않는다.
(type binding을 지원하는 cpp는 되지 않을까?)
일단 타입이 강하게 묶여있기 때문에
int 형으로 계산을 하고 나서 long 형으로 변환하는 건 이미 데이터가 손실 되어 의미가 없어진다.
무조건 계산 전에는 형 변환을 해주고 시작하는 것이 옳다(!).
그리고 두개의 크기가 다른 타입을 계산할 경우 자동으로 큰 쪽으로 맞추어지나
정수형은 int 형이 최고 타입으로 long 형으로는 자동적으로 크기가 키워지진 않는다.
System.out.println(1000000 * 1000000);
System.out.println(1000000 * (long)1000000);
System.out.println((long)1000000 * 1000000);
System.out.println((long)1000000 * (long)1000000);
System.out.println((long)(1000000 * 1000000));
System.out.println(1000000 * 1000000L);
System.out.println(1000000L * 1000000);
System.out.println(1000000L * 1000000L); |
-727379968
1000000000000
1000000000000
1000000000000
-727379968
1000000000000
1000000000000
1000000000000 |
'Programming > Java' 카테고리의 다른 글
java break / continue (0) | 2014.03.10 |
---|---|
java와 cpp의 차이점 - 연산자 오버로딩 / 다중상속 (0) | 2014.03.10 |
java byte 형의 오묘함 (0) | 2014.03.07 |
java primitive data type + 연산자 (0) | 2014.03.07 |
java framework (0) | 2014.03.06 |