class Solution {
public long[] solution(int x, int n) {
long[] answer = new long[n];
for(int i = 0 ; i<n; i++){
answer[i]=x+(long)i*x; //해당 부분!
}
return answer;
}
}
answer 는 long타입의 배열이다.
따라서 x+i*x를 하면 자동으로 long 타입으로 타입캐스팅 되는 줄 알았으나.
int i와 int x 를 곱하는 i*x 이 부분 자체에서 오류가 나는 듯 하다.
ix이 부분 자체는 int 형이지만 ix를 했을 때 int 의 범위를 넘어가는 결과값이
나오면 에러가 나는 것이다.
(정확히는 에러가 아니라 이진법으로 계산하는
컴퓨터의 특성상 범위를 넘어가는 수를 억지로 넣으려다 보니 잘못된
숫자가 반환 되는 것이다)
따라서 i*x 앞에 long을 붙여줘 이 부분만 long으로 타입캐스팅 해주면
x+i*x 부분 모두 long 으로 자동 타입캐스팅 되는 것이다.
반환값에서만 타입을 고려하는 것이 아니라 계산 과정 중에도 타입을
고려해 주어야 하는 경우가 있다.