x++와 ++x에 관해서
다온
c공부를 하다가 ++의 위치에 관해 궁금한게 있어서 이래저래 실험(?)을 해봤는데요,
#includestdio.h
int main(){ int x,y; int array[8][8]; /*declaration of 2d array*/
x=0; y=++x; printf(x: %d\ny: %d,x,y);
}
위 프로그램에서 y가 ++x일때는 x값과 y값 모두 1이고,y=x++ 일 때는 x는 1, y는 0. 이런식으로 ++가 먼저 적용되는가, 나중에 적용되는가가 다르다는건 알겠더군요.
그런데 for 루프에서 변수 업데이트 부분(변수 초기화;루프 조건;변수 업데이트) 에 ++x가 들어갔을 때와 x++가 들어갔을 때 달라지는 점이 있나요? 루프를 돌려보면 달라지는건 없는데, 제가 보는 강좌에선 어떨땐 x++를, 그리고 어떨땐 ++x를 쓰더라구요.
그냥 둘 다 상관이 없으니 아무거나 쓴 것인가요? 아니면 변수대신 다른 부분에서 ++를 쓸 경우 달라지는 것이 있나요?
-
리라
아.. 그런 차이점도 있군요... 감사합니다 ^^
-
내꽃
int같은 기본 타입인 경우에는 똑같은 기계어를 생성해냅니다. 하지만 클래스 타입인경우 연산자 오버로딩을 어떻게 구현했냐에 따라서 차이가 있습니다. 예를 들어 C++의 STL에서는 이터레이터를 ++it 하는 것이 it++ 이라고 작성하는 것 보다 성능이 좋습니다. 이것 때문에 STL코드에서는 반복자를 증가시킬때 it++보다는 거의 항상 ++it라고 쓰여있는 코드를 보실 수 있을 것입니다.
-
콩알눈
아아, 정말 저렇게 쓸 수도 있겠군요; 수다님도 감사합니다!
-
지나
씨어 // 아.. 저렇게 연속적으로 쓰는 경우가 있었군요 ;;;; ^^ 감사 합니다. ^^
-
알프레드
씨어 // 이글을 보실지는 모르겠지만, 혹시 예외적인 경우는
multi core processor 일때 문제가 될 수 있나요?
( 아니면 걍 단순 Thread일려나?? )
아~ 궁금해서 여쭈어 보는겁니다. ^^ -
벤자민
아하, for문에선 상관이 없는거군요. 세 분 모두 감사합니다! ^^
-
한별
앞에 있는 ++은, 사용되기 전에 계산되고,
뒤에 있는 ++은, 사용된 후에 계산이 됩니다. 이때 사용된다는 의미는.
\현재 문장의 계산이 끝난 다음.\ 이라는 의미가 되는데요.
for문에 증감식이 들어 가는 부분은
x++ 이 되던, ++x가 되던 한 문장 뿐이니깐,
어딘가에 영향을 미칠 수 조차 없습니다. ^^ -
좋아해
for문에서 조건자 증가로 사용하는 ++ 은 앞으로 하든 뒤로하든 크게 상관은 없습니다...현수다님 말처럼..
-
다니엘
내부적으로 들어가면 미세한 차이가 있다고 하지만... 그냥 상관없다고 생각하시면 됩니다 ^^