본문 바로가기

프로그래밍/C언어

[C언어] 증가연산자와 감소연산자 ( 전치, 후치 )

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

◎ 증가연산자

    값을 하나 증가시키는 연산자를 말합니다.


 

  void main()

  {

       int nTemp = 5;

       nTemp++;


       printf("nTemp : %d\n", nTemp);

       return;

  }


 

  결과 nTemp : 6



◎ 감소연산자

    값을 하나 감소시키는 연산자를 말합니다.


 

  void main()

  {

       int nTemp = 5;

       nTemp--;


       printf("nTemp : %d\n", nTemp);

       return;

  }


 

  결과 : nTemp : 4



위에 두 연산자는 코드만 보고도 이해할 수 있을 것입니다.

하지만 저 위에는 후치 연산만 나와있는데요.

 

전치? 후치? 

 

++nTemp 앞에 연산자가 붙으면 전치연산, nTemp++ 뒤에 연산자가 붙으면 후치연산이라고 합니다.

연산순서의 차이가 있는데요.

++nTemp 전치 연산을 하게되면 증가연산을 먼저 한 후 실행을 하고 nTemp++ 후치연산을 하게되면 실행을 먼저한 후 증가연산을 하게 됩니다.




  void main()

  {

       int nTemp1 = 5;

       int nTemp2 = 5;


       printf("nTemp1 : %d\n", ++nTemp1);

       printf("nTemp2 : %d\n, nTemp2++");

       printf("nTemp2 : %d\n, nTemp2");

       return;

  } 


 

  결과    nTemp1 : 6

           nTemp2 : 5

           nTemp2 : 6



위와 같은 결과가 나오게 되는데요.

++nTemp는 1증가를 먼저 해 준 다음에 printf문을 실행하여 6이라는 결과값이 나오고

nTemp++는 printf문이 먼저 실행되었기 때문에 5라는 결과값이 나옵니다.

하지만 바로 아래에서 다시 printf문을 실행해 주면은 6이 출력됩니다.

 

연산 순서만 잘 기억한다면 전치, 후치연산이 헷갈리는 일은 별로 없을듯 합니다.

 

그런데 가끔 소스를 보면은 이런 for문이 있습니다.


 

  for( int nCount = 0; nCount < 5; ++nCount )

  {

       printf( "nCount : %d\n", nCount );

  }


 

  결과    nCount : 0

           nCount : 1

           nCount : 2

           nCount : 3

           nCount : 4




 

  for( int nCount = 0; nCount < 5; nCount++ )

  {

       printf( "nCount : %d\n", nCount );

  }


 

  결과    nCount : 0

           nCount : 1

           nCount : 2

           nCount : 3

           nCount : 4



분명히 전치, 후치 연산을 하고 있는데 결과값은 똑같이 나오는데요.

그 이유는 for문 내의 처리순서때문입니다.

 

for(  int nTemp = 0; nTemp < 5; ++nTemp  ) 이라는 for문은

1. int nTemp = 0   <- 이 실행

2, nTemp < 5   라는 조건이 맞다면 

3. ++nTemp를 실행합니다.

 

그렇기 때문에 for문 안에 전치 후치를 사용하여도 같은 값이 나오게 됩니다.



'프로그래밍 > C언어' 카테고리의 다른 글

[C언어] scanf, scanf_s 함수  (0) 2016.04.27
[C언어] rand, srand 함수  (0) 2016.04.19
[C언어] C언어의 변수 범위  (0) 2016.04.14
[C언어] while문  (0) 2016.04.04
[C언어] 삼항연산자  (0) 2016.03.25