c언어 함수와 변수 코드 문제입니다.
#include <stdio.h>
void f(void);
int main(void)
{
f();
f();
return 0;
}
void f(void)
{
static int count = 0;
printf(%d\n", count++);
}
이 코드에서 정답을 보면
0
1
이렇게 출력된다고 하는데 count 변수가 static이라서 초기화되지 않는것은 이해되는데요 count++를 prinf 하게되면
1
2
이렇게 나와야하는것 아닌가 싶어서요... 궁금합니다!
증가 연산자의 사용 방법에 따라 초기 증감되는 값이 달라지긴 합니다.
printf(%d\n", 변수증가);
(1) 변수증가를 ++count 사용할 경우
처음 loop 시 count = 0으로 초기화 한 값이 1 증가 후 print됩니다.
(2) 변 수증가를 count++ 사용할 경우
처음 loop 시 count = 0으로 초기화 한 값으로 print가 되고 count = 1은 다음 loop에서 처리됩니다.
도움이 되셨길 바랍니다.
감사합니다.
count++의 경우 증감연산자가 피연산자 뒤에 위치하여 피연산자의 값은 1 증가하지만 해당 구문이 실행될 때의 피연산자값은 후위연산자가 동작하기 전 값으로 처리됩니다 ++count를 사용하시면 원하시는 값을 얻을 것 같네요.