프로그래밍

 3198, 1/160 회원가입  로그인  
   물먹자
   c언어 질문좀요

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


/* practice_2 */

#include <stdio.h>

int main(void)
{
        int i=0,cnt;
        int num=0;

        printf("3의 배수의 개수:");
        scanf("%d",&cnt);

        while(num++<cnt)
        {
                i+=3;
                printf(" %d ",i);
                
        }

        return 0;
}
위에 소스랑
while(num<cnt)
{
          i+=3;
          printf(" %d ",i);
          num++;
                
}
이거랑 출력결과가 같은데  위에껀 연산후 +1 아랫것도 마찬가지입니다

while(++num<cnt)
{
        i+=3;
        printf(" %d ",i);
                
}


while(num<cnt)
{
          i+=3;
          printf(" %d ",i);
          ++num;
                
}
이건  +1한후 연산입니다 근데 여기서 만약 5를 입력햇을때 위에껀 4개 아랫건 5개가 출력되는데 왜 그런건가요?? 둘다 똑같은 결과가 나와야되는거 아닌가여 +1후 연산인데 답변좀 부탁드려요

  Hit : 4693     Date : 2010/12/27 04:51



    
ruka270 맨 마래 while은 그 위의 while과 num변수가 변경된 값을 평가하는 시점이 다릅니다.

while(++num<cnt)
{
i+=3;
printf(" %d ",i);

}
이게 A

while(num<cnt)
{
i+=3;
printf(" %d ",i);
++num;

}
이게 B라고 했을때

A
num=1 / 1<5 -> continue
num=2 / 2<5 -> continue
num=3 / 3<5 -> continue
num=4 / 4<5 -> continue
num=5 / 5<5 -> exit
A result : 4

B
num=0 / 0<5 -> continue : num+1=1
num=1 / 1<5 -> continue : num+1=2
num=2 / 2<5 -> continue : num+1=3
num=3 / 3<5 -> continue : num+1=4
num=4 / 4<5 -> continue : num+1=5
num=5 / 5<5 -> exit
B result : 5
2010/12/27  
물먹자 아 ㅋㅋㅋ 감사합니다 2010/12/27