초등학교 때 수학 만화책을 본 적이 있다면 이런 문제를 쉽게 풀 수 있을 것이다.
1, 2, 3, 4 ... 98, 99, 100까지 하나씩 더하지 않고
1과 100의 합은 101이고 101이 1부터 100사이에 50개 있구나! 가 풀이이다.
for(char i = 0; i < 1000; i++) {
i += 10;
}
pritnln(i);
위의 코드에서 마지막에 출력될 i의 값을 구할 수 있는가?
정답은 println()을 실행하지 않는다.
그 이유는 char로 표현할 수 있는 값의 범위가 -128~127 이기 때문에
127: 01111111(2) 에 1을 더했을 때 -128: 10000000(2) 이 나오므로
무한 loop에 빠지게 된다.
마찬가지로 int로 표현할 수 있는 값의 범위는 -21억~21억 정도이다.
그렇기 때문에 입력받은 숫자의 범위가 매우 클 경우
두 정수 사이의 합이 int형으로 표현할 수 있는 수의 범위를 넘을 수 있기 때문에
long 타입으로 캐스팅해줘야 제대로 된 답을 구할 수 있다.