강의로 돌아가기
-

i+1과 ++i의 차이

1)

    for (int i = 0; i < iarray.length; i++) {
        iarray[i] = i + 1;
    }

2)
for (int i = 0; i < iarray.length; i++) {
iarray[i] = ++i
}

1번과 2번에 따라
배열에 들어간 값을 모두 구할 때 결과가 다르던데
왜 그런건가요~?

  • 2a3a4a5a6a
    d 2a3a4a5a6a 2018.09.11 21:32
1 개의 답변
박우성

두 경우 모두 i를 1이라 가정할 때
1번의 경우는 iarray의 [1] 번 인덱스 영역에 1 + 1한 결과값, 2를 저장합니다.
여기서 우리는 i의 값을 꺼내다 1을 더했을 뿐이기에 i는 여전히 1인 상태이고 다음 loop에서 2가 되어 2+ 1 = 3의 값을 [2]인덱스 영역에 저장하겠죠

하지만 2번의 경우엔 증가 연산자가 앞에 붙어있습니다. 이 경우엔 해당 식 평가 이전에 i 변수의 값을 1 증가 시킨 후 식 평가가 이루어집니다.
당장 i가 1일 때에는 1+1 이나 1을 1증가시킨 2이나 똑같지만 , ++연산자를 사용하면 해당 변수 값 자체를 변화시킨 것이기에 i가 2인 상태로 다음loop에 진입하여 3이 된 후 다시 ++연산자에 의해 +1 증가시킨 4가 식의 평가 결과가 되어 결과적으로는 값이 2씩 증가하게 됩니다.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.