while문 질문

byflashh의 이미지

char num = 1;
char sum = 1;
char aaa = 0;

요렇게 해놓고

whie (sum <=3){
sum = aaa + num;
num++}

printf("%d", sum);
}
이렇게했을때 결과값이 4가나오는데

왜이런거죠???

사이클1 : sum = 1 aaa = 0 num = 1
사이클2 : sum = 2 aaa = 0 num = 2
사이클3 : sum = 4 aaa = 0 num = 3

사이클3까지가서 sum = 4가 된거같은데
4는 sum<=3에 맞질않으니 사이클2에서 끝나야 되는거 아닌가요???

그리고 while문이 돌아가는 순서좀 알려주시면 감사하겠습니다

라스코니의 이미지

사이클1 : sum = 1 aaa = 0 num = 1->2
사이클2 : sum = 1 aaa = 0 num = 2->3
사이클3 : sum = 2 aaa = 0 num = 3->4 이 아닐까요?

그럼 사이클4, 5는 어떻게 되나요?

김정균의 이미지

코드를 다음과 같이 작성해서 봐 보세요.

#include <stdio.h>
 
int main (void) {
    char num = 1;
    char sum = 1;
    char aaa = 0;
 
    while ( sum <= 3 ) {
        printf ("### pre sum : %d, ", sum);
        sum = aaa + num;
        num++;
        printf ("after sum : %d, aaa : %d, num : %d\n", sum, aaa, num);
    }
 
    printf("%d\n", sum);
    return 0;
}

printf 는 정말 엄청난 debug 도구 입니다. 아마도 가장 많은 사람들이 사용하는 디버깅 도구가 아닐까 싶습니다.

님이 의도한 결과와 비슷하게 나오려면 sum 의 기본 값이 0 이었어야 할 겁니다.