프로그래밍

 3198, 1/160 회원가입  로그인  
   kimusernim
   [c언어초보]정말 미스테리합니다!

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=6339 [복사]


#include <stdio.h>
int main(void)
{
int a;
a=1;
printf("%d %d \n",a++,++a);
printf("%d %d \n",++a,a++);
printf("%d %d \n",a++,++a);
return 0;
}

출력결과:
2 3
5 3
6 7

c언어 입문한지 며칠 안되서 그냥 초보소스 베껴놓고 조물락거리면서 익숙해지려는 마음가짐의 상태거든요.
2는 1+1 거쳐서 a가 2로     3은 1+2 거쳐서 +가 3으로
5는 3+2 거쳐서 +가5로  된다고 생각했는데 3부터 막히네요.
왜 저런 결과가 나오는거죠?

  Hit : 4360     Date : 2013/05/08 01:42



    
byun1219 ++a 개념과 a++개념은 비슷하지만 미세한 차이가 있습니다.
a++은 a를 먼저 인식한 후 +1를 해주는 것이고
++a는 +1를 인식한후 a를 인식합니다.
그러니 처음에 돌아가면 1 , 3, 4 ,4 ,5, 7 이 나오는게 정상입니다.
위 코드를 다시 돌려보니 저는 2 2 4 3 6 6 이 나오네요
printf()함수를 잘 이해 못하셨나보네요
printf 함수는 <<순서대로 인식합니다. 그러니
printf("%d %d \n",a++,++a); 여기 구간에서 ++a = 2 후 a++= 3
첫번째문장은 처음 계산된 a=++a로만 printf 해주기때문에 2 2을 출력되고
printf("%d %d \n",++a,a++); 여기 구간에서 a++ =3 후 ++a = 5
두번째 문장은 처음 계산된 a=3++로만 printf 해주기때문에 3 그후 +1되었으니를 4 3출력되고
printf("%d %d \n",a++,++a); 여기 구간에서 ++a =6 후 a++ =7
세번째 문장은 처음 계산된 a=++5로만 6그리고 다음값도 6 으로 출력됩니다.
하지만 최종값은 7 이 나오게 됩니다..
하지만 이런 코드는 사용하지 않기 때문에 굳이 이해 하실필요까지는 없을듯해요.
c언어를 사용안한지 3년은 되어서 .. 머리가 잘 안돌아가네요 많은 공부했네요
2013/05/08  
nsh009 선연산 후연산 2013/05/13  
JackJ 선연산자, 후연산자 2013/06/04  
dontknow 정확히 말하자면 저 코드의 결과는 컴파일러 마다 다르다 입니다.
gcc 로 컴파일한 결과와 vc++6.0, vc++11.0 결과가 모두 다릅니다.
그렇기 때문에 어떠한 결과를 얻으려고 저런 코드를 작성하는것은 바람직하지 못합니다
2013/07/22  
5544496 막연하게 정보보안전문가가 되고싶다고 c언어부터 무작정 준비하는게 아니라

무슨일을 하게 되고 c언어부터 서버, 네트워크, 해킹까지 어떤실무, 자격증, 스펙을 준비해야하는지

정확한 계획을 세우고 준비하셔야 합니다.

정확한 계획이 필요하거나 궁금하신 사항 있으시면 cyh6223 친구추가하고 질문주세요 ^^
2013/08/11