Programming Language/C

함수호출 에서의 증감 연산자

c4fiber 2017. 4. 5. 17:25

후배에게 질문받았다. 


#include <stdio.h>


void main() {

        int a = 10; 


        printf("a++, ++a %d %d\n", a++, ++a);



        a = 10; 

        printf("++a, a++ %d %d\n", ++a, a++);

}



이 코드의 결과가 어떻게 출력되느냐 인데 결과는 


11 12

12 10


이다.


C언어는 전통적으로 함수인자를 뒤 인자부터 넣기때문에 코드 실행은 마지막 인자부터 왼쪽으로 실행된다.


이때 후위연산자를 실행하면 ex) a++ 라고 한다면 a 의 값이 상수로 변환되어 인자에 들어가고 a = a+1 이 수행된다.


고로 a=10 이고 a++ 이면 a++ => 10 (이후 a += 1) 이 된다.



신기한 C언어 세상.

'Programming Language > C' 카테고리의 다른 글

int 와 long 의 차이점  (1) 2017.03.13