#include <stdio.h>
int main (void)
{
int total=0;
int num=1;
while(num!=0)
{
printf("정수 입력(0 to quit) : ");
scanf("%d",&num);
total+=num;
}
printf("입력된 정수의 합 : %d n",total);
return 0;
}
여기서 while문은 밑에
printf("정수 입력(0 to quit) : ");
scanf("%d",&num);
total+=num;
이 세줄을 실행하고나서 num이 0인지 체크하고 0이면 while문을 빠져 나간다.
원래 while문은 저 코드들을 실행하기 전에 조건이 참인지 검사를 하는데, 처음에 num을 1로 초기화했으니 문제없이 실행이 됨.
그리고 왜 total에 일일이 더해주지 않았는데 저장이 되느냐 이렇게 궁금해하는거같은데
결론을 말하자면 넌 일일이 더한게 맞음
저 코드는 while문에서 한번 반복할때마다 scanf로 정수값을 읽어서 total에 더해주는코드인데
니가 입력할때마다 그 입력받은값이 total에 더해진다는 말임
total은 처음에 0이였는데 여기서 num값을 처음에 3으로 입력 받앗다면
total = 0 + 3 이렇게 해서 total에 3이 더해진다.
그리고 total은 여전히 메모리에 있기때문에 그 값을 잃지않고 계속 가지고있다.
코드를 보니까 0을 입력하기 전까지는 정수를 입력할때마다 별다른 표시없이 입력해라는 표시만 뜨는거같은데
3을 입력하고나서 또 입력 요구 뜨면 거기서 5를 입력했다고 하자
그럼 기존의 total에는 3이 저장되어있는데
total= 3 + 5 가 되어 total은 8이 된다.
이게 num으로 0이 입력되기전까진 계속 이런식으로 니가 입력한값이 바로바로 누적되면서 저장되고 있는거다.
그리고 while문을 빠져나가면 while문을 빠져나갈때 마지막으로 total이 가지고있던 값을 그대로 출력 해주는거다.
이 설명을 보고도 이해가 안간다면 그냥 접길 바란다.
댓글 0