/Loop의변수프로그래밍 질문글들 중에 자주 보이는 게, "구구단을 만들었는데 2단만 출력되고 끝나버려요"더라.int dan=2, num=1; while (dan<10) { // 이 지점에서 num=1 로 다시 초기화해야 함 while (num<10) { printf("%d x %d = %d\n", dan, num, dan*num); num++; } dan++; }이유야 쉽게 알 수 있듯이 안쪽 루프가 다 끝났을 때 num값은 10이고, 그 상태에서 바깥쪽 루프의 다음 반복 시점에서 안쪽 루프 조건이 거짓이 되어 바로 끝나버리기 때문인데... 질문자들 중에 대부분은 저 주석이 있는 위치에서 num을 다시 1로 초기화해주라는 답변을 보면 "아하"하고 넘어가는데, 어떤 사람들은 "왜 저기에 num=1이 있어야 하나요"라고 질문을 한다. 오늘에서야 든 생각인데, 코드의 앞쪽으로 되돌아간다는 것이, 일종의 "시간을 거슬러 올라간다"는 개념으로 받아들여졌을지도 모르겠다. num값 역시 제일 처음 값이었던 1로 되돌아갔을 거라 생각이 들었을 수도? 그러고보면 그런 형태로 만들어진 프로그래밍 언어도 세상 어딘가는 있지 않을까 싶기도 하고... 다만, 그럼 dan은 왜 계속 2로 머물러 있지 않냐는 의문은 안 들까 싶긴 한데 :-) -- Raymundo 2013-2-7 2:10 am
Comments & Trackbacks무식한 방법일지 모르지만 저의 경우 펄을 짜다가 예상한 값이 안나오면각 의심점 마다 값을 출력을 합니다. printf "point 1 : " . "$num" . "\n"; 이런 식으로 그러면 따라가기가 좀 쉽더라구요 특히 루프가 많을 때 -- MindControl 2013-2-7 10:20 am
perl은 수동.. ㅠㅠ -- LF 2013-2-17 7:25 pm
주인장분류 |
Diary최근 글들
코멘트와 트랙백
옛 글들RSS주요 페이지
이 홈페이지의 인터위키는 다음과 같습니다. GyparkWiki UTF-8 https://gypark.pe.kr/wiki/ |