프로그래밍

 3198, 1/160 회원가입  로그인  
   qkreoduf1654
   [C언어]a++,++a가 헷갈려 죽겠어요 쉽게 풀이해주실분

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


c언어 또 하다가
int a=0;
int b=0;
여기까지는 알겠는데
a++;
++a; 요 둘의 차이점을 모르겠지 말입니다.
책 설명을 듣자보니 a++은 a를 수행하고 1을 더해주고 ++a는 1을 더해주고 a를 수행한다는건데...
제가 계산하면 둘이 답이 같다고밖엔 계산이 안됨... 풀이좀 부탁드려요 ㅋㅋ

아 그리고
int main
main
그리고 옆에 (void),()막 이런것들 의미도 덤으로 해주시면 감사드리겠습니다.

  Hit : 42221     Date : 2011/07/20 05:04



    
Pang 그거랑 관련된 프로그램을 짜보세요 많이 가능하면 이해가 될때까지 전 그렇게 해서 이해를 했어요 2011/07/20  
kjwon15 printf("%d",a++);
printf("%d",++a);

이 둘을 각각 해보면 알게 됩니다.
2011/07/20  
Pang printf("%d %d", a++, a);
printf("%d %d", ++a, a);

이해하기는 이게 괜찮지 않을까요?
2011/07/20  
adiangrowif 열형강의 C 책하나 보세요. 도서관 가면 있을 듯... 하나 사도 괜찮고...
a=0;
printf("%d\n",a++);
printf("%d\n",++a);
출력은
0
2
가나옵니다.
첫번째 printf의 수행 시 a를 인자로 넘겨주는 작업을 먼저 수행하고난 다음에 1을 증가 시킵니다.
그럼.. 현재 상황은
0 출력하고, a=1
두번째 printf의 경우에는 증가를 먼저 시킨후에 인자로 넘겨줍니다.
a=2가 된 다음에
2 출력, 프로그램 종료
라는 겁니다.
void는 포인터 타입이기도 하고 함수이름(void); 나오는건 인자를 받지 않는다는 의미입니다만,
c책을 한번 공부해보세요.
2011/07/20  
endosymbiosis 프로그램 실행 시 우선 순위를 잘 따져보셔야 됩니다.
그리고, 대다수는 내부적인 순서에 대해서 너무 모르시는 것 같네요.

printf 함수는 출력할 때 " "(따옴표) 안에서 좌측부터 출력되지만,
인자값(예를 들면 a, a++, b 같은 것)의 실행은 우측부터 시작됩니다.

왜 그럴까요? 그건 스택 배우시면 이해가 될 것입니다.
아래의 6가지 경우를 모두 실행해보시면서 이해하시기 바랍니다.

case 1
int a=0;
printf("%d\n", ++a);

case 2
int a=0;
printf("%d\n", a++);

case 3
int a=0;
printf("%d %d\n", ++a, a);

case 4
int a=0;
printf("%d %d\n", a++, a);

case 5
int a=0;
printf("%d %d\n", a, ++a);

case 6
int a=0;
printf("%d %d\n", a, a++);

오답률 40%
int a=0;
printf("%d %d %d %d %d\n", ++a, ++a, ++a, ++a, ++a);

오답 1 2 3 4 5 (80%)
오답 1 1 1 1 1 (15%)
오답 0 0 0 0 0 (5%)

정답 5 4 3 2 1
2011/07/21  
jsk0612 a = 10; 이라고 칠께요

b = a++; 이러면 b에 a값을 먼저 넣어준 뒤 a가 1이 증가해요 이러면 b는 10이죠

다시 a = 10이라 하고,

b = ++a; 이러면 b에 a값을 먼저 1 증가시키고 넣죠.. 이러면 b는 11이 되요

a++ // 이건 선 대입 후 연산
++a // 이건 선 연산 후 대입

이렇게 되죠..
2011/07/21