본문 바로가기

old/Programming

전위연산자(++i)와 후위연산자(i++)의 차이점

반응형

 

정의

  • 전위연산자(++i)는 코드를 실행하기 전에 i 에 1 이 더해진다
  • 후위연산자(i++)는 코드를 실행한 후에 i 에 1 이 더해진다

예제

code name How
++i prefix increment operator i = i+1;
return i;
i++ postfix increment operator final int t = i;
i = i+1;
return t;
--i prefix decrement operator i = i-1;
return i;
i-- postfix decrement operator final int t = i;
i = i-1;
return t;

int x = 2;
int y = 2;
  
System.out.println(x * y++);// x=2, y=2 나중에 더해지므로, 4(=2*2)를 출력한다 출력후 y=3
System.out.println(x * y++);// x=2, y=3 나중에 더해지므로, 6(=2*3)를 출력한다 출력후 y=4

int x = 2;
int y = 2;

System.out.println(x * ++y);//x=2, y=2 먼저 더해지고 코드가 실행되므로, 6(=2*3)를 출력한다

차이점

  • i++ 는 코드를 실행한 후에 i 에 1 이 더해진다
  • ++i 는 코드를 실행하기 전에 i 에 1 이 더해진다

전위연산자(++i) 사용시 컴퓨터 내부에서 일어나는 일

  1. 메모리에 저장된 값 가져오기.
  2. 값을 1 증가시키기
  3. 값을 메모리에 저장하기.
  4. 필요한 경우 값 할당하기.

후위연산자(i++) 사용시 컴퓨터 내부에서 일어나는 일

  1. 메모리에 저장된 값 가져오기.
  2. 이전 값을 유지하기 위해 변수의 임시 복사본 만들기.
  3. 값을 1 증가시키기.
  4. 값을 메모리에 저장하기.
  5. 필요한 경우 값 할당하기.

결론

  • ++i가 추가적인 메모리를 사용하지 않으므로, 약간 더 빠르고 약간의 메모리를 아낄수 있다. 이는 벡엔드(Java) 계열에서는 크게 중요하지 않지만, 게임개발 이나 임배디드 계열 프로그래밍(C, C++)같이 메모리가 중요한 코드에서는 (++i)를 쓰는게 좀더 메모리를 아낄 수 있다.
  • i++ 는 코드를 실행한 후에 i 에 1 이 더해진다
  • ++i 는 코드를 실행하기 전에 i 에 1 이 더해진다
반응형