result = result++;와 result = ++result;의 차이

FeelsBotMan·2024년 12월 18일
0

result = result++;result = ++result;증감 연산자의 동작 방식 때문에 결과가 다르다. 이를 이해하려면 후위 연산자(result++)전위 연산자(++result)의 차이를 알아야 한다.


1. 후위 연산자 (result++)

  • 값을 먼저 반환한 후, 증가한다.
  • 즉, result++는 현재 값을 반환하고 나서 result를 1 증가시킨다.

2. 전위 연산자 (++result)

  • 값을 먼저 증가한 후, 반환한다.
  • 즉, ++resultresult를 먼저 1 증가시키고 나서 증가된 값을 반환한다.

코드 분석

(1) result = result++;

  1. result++후위 연산자이므로, 현재 값이 반환된 후 result가 1 증가한다.
  2. 하지만, result =로 인해 반환된 현재 값이 다시 result에 할당된다.
  3. 따라서 증가한 값은 덮어쓰여져 무시된다.
    • 결과: result의 값이 변하지 않는다.

예시:

let result = 5;
result = result++;
console.log(result); // 출력: 5

(2) result = ++result;

  1. ++result전위 연산자이므로, result를 먼저 1 증가시킨다.
  2. 증가된 값이 result =에 의해 다시 result에 할당된다.
  3. 결과적으로, result는 정상적으로 1 증가한다.

예시:

let result = 5;
result = ++result;
console.log(result); // 출력: 6

정리

표현식설명결과
result = result++;result의 현재 값이 반환되고, 증가된 값이 덮어써져 무시됨.변하지 않음
result = ++result;result를 먼저 증가시킨 후, 증가된 값이 다시 result에 할당됨.1 증가

왜 이런 차이가 발생하는가?

result = result++;값을 증가시키는 작업과 다시 할당하는 작업이 충돌하면서 발생한다.

  • result++의 반환값(증가 전 값)이 result에 덮어써지므로 실제 증가한 값이 적용되지 않는다.
    ++result는 증가 후 값을 반환하므로 이런 충돌이 발생하지 않는다.

Tip: 코드의 명확성을 위해 result++++result를 대입문과 함께 사용하는 것은 지양하는 것이 좋다.

profile
안드로이드 페페

0개의 댓글