c언어 중첩 while 반복문 질문
글쓴이: whs9400 / 작성시간: 화, 2015/01/27 - 6:42오후
제가 지금 윤성우 c프로그래밍 책으로 while문을 공부하고 있구요. 지금 현재 while 중첩까지 나간 상태인데요.
책의 예제에 구구단이 있더라구요.
#include <stdio.h> int main(void) { int cur=2; int is=0; while(cur<10) { is=1; while(is<10) { printf("%dx%d=%d \n", cur, is, cur*is); is++; } cur++; } return 0; }
이 소스에서 궁금한게 하나 있거든요.
while문이 어떤 순서로 들어가는지 모르겠습니다.
제일 바깥쪽에 있는 while문 들어가진후 안에 있는 while문이 실행이 되잖아요??
그럼 안에 있는 반복문 한번 실행한후에 다시 바깥쪽 while문으로 나가나요?
is=1;이게 참을 만족하려고 들어간거 같은데요.
만약 안에 while문 실행한후에 바깥쪽으로 나간다면 is=1;로 다시 초기화 되지 않을까요?..
Forums:
is=1 은 참을 만족하려는 것이 아니라, 초기화를
is=1 은 참을 만족하려는 것이 아니라, 초기화를 위해서 인것입니다.
즉, cur 1.. 10 일 동안에 안의 whiel loop를 10번을 각각 돌리기 위해서 인거죠.
만약 안에 while문 실행한후에 바깥쪽으로 나간다면
만약 안에 while문 실행한후에 바깥쪽으로 나간다면 is=1;로 다시 초기화 되지 않을까요?..
whlie문을 빠져나가서 is=1;로 초기화가 되는 것이 아니고,
안에 있는 while문을 실행하고(표준출력이 10번 되고,is값은 최종적으로 10이 되고), cur이 2였다면 cur++; 문장으로 cur은 3이 됩니다.
그리고 밑에 더 실행할 문장이 없으므로 while문 조건을 다시 검사합니다.3은 10보다 작으므로 조건을 만족하고 while문 안으로 들어가서 is=1; 이 코드를 만나기 때문에!!! is는 1로 초기화가 됩니다. 그리고 안쪽의 while문 조건을 총 10번 만족하여
다시한번 표준출력이 10번 됩니다. 그리고 cur++.....(이하생략)
굳이 덧붙이자면, '='은 대입연산자입니다. is=1; 이 문장은 is는 1이다 가 절대 아닙니다! is라는 변수에 1이라는 값을 집어넣는다 에 가깝습니다.
while문을 빠져나가서 컴퓨터가 "is는 1이었지?" 하면서 초기화 시키지 않습니다...
중첩은 음... 바깥하고
중첩은 음... 바깥하고 안쪽ㅎ3ㆍ는건지...
아니ㅡ아아.... 원리 이해가...
-----------------------------------------------------------------------------------------------------
'Python'
네 맞습니다
cur=2,is=1
cur=2,is=2
.
.
.
cur=2,is=9
까지 간다음에
cur=3,is=1로 다시 가는겁니다
오오 감사합니다. 이걸 원했어요 ㅎㅎ
오오 감사합니다. 이걸 원했어요 ㅎㅎ
-----------------------------------------------------------------------------------------------------
'Python'
댓글 달기