|  |
| |
| 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 |
|