명시적 형 변환 질문이요!!

yangshmd Reply 9 years 4 weeks ago
상수는 무조건 int형으로 저장되니까 int형 범위를 넘어서는를 정수를 저장하려면 명시적으로 자료형을 long으로 바꿔서 long 변수에 저장해야되잖아요 그런데 long num = 10000000000000L; 은 오류가 안나는데 long num = (long)10000000000000;은 왜 오류가 나죠?? 명시적으로 형 변환 할때 접미사 붙이거나 앞에 소괄호로 저렇게 하는거 둘 다 되는거 아닌가요??
dyddnekt1 Reply 9 years 4 weeks ago
에러가 num에 저 값을 넣을 때 나는 게 아니고, 10000000000000이라는 숫자를 받는다(?) 라고 할 때 나는 거에요. 첫번째 문장은 long형 정수 10000000000000 를 num에 저장한다 이고, 두번째 문장은 int형 정수10000000000000를 long형으로 변환시켜 num에 저장한다 인데, int형 정수 10000000000000라는 부분에서 오류가 나는 것 같네요. 사실 저도 초보라 확실하진 않아요....
withcs2 Reply 9 years 3 weeks ago
1플님 맞아용!! 자바에선 모든 정수모양 정수들을 특별한 명시가 없으면 32비트 정수로 생각해요. 32비트를 넘어가면 뒤에 L이라고 써 줘야해요.