• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

6.15 중첩된 루프들에서 이해가 안되는 것이 있습니다

21.01.21 10:29 작성 조회수 98

0

강의와 관련있는 질문을 남겨주세요.
• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)
• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)
서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등)

질문 전달에도 요령이 필요합니다.
• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.
• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.
• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요. 
• 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요!

구체적인 질문일수록 명확한 답을 받을 수 있어요.

#include <stdio.h>

#define NUM_ROWS 12 

#define FIRST_CHAR 'A'

// #define LAST_CHAR 'L'

 

int main()

{

int r; // row loop

int c; // charcter loop

       for (r = 0; r < NUM_ROWS; ++r) // [out loop]  r=0 이고 0,1,2,3,4,5,6,7,8,9,10,11,12 값을 반복 하며

{

                 for (c = FIRST_CHAR + r; c < FIRST_CHAR + NUM_ROWS; ++c)  // [inner loop]

{

printf(" %c ", c);

 

}

printf("\n");

}

return 0;

}

이 반복문에서  for 2번째 inner loop에서  c < FIRST_CHAR + NUM_ROWS; 를 하는데 왜 알파벳이 줄어들면서 반복되는지 잘 이해가 안되네요  NUM_ROWS; 값은 12인데 

A B C D E F G H I J K L

B C D E F G H I J K L 

 C D E F G H I J K L

이렇게 줄어들면서 나오는 이유가 궁금합니다 

• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.
• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.
• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다.

기본적인 예의를 지켜주세요.
• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. 
• 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. 
반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다. 

답변 1

답변을 작성해보세요.

0

안소님의 프로필

안소

2021.01.21

안녕하세요.

먼저 다음에 질문 주실 땐 연관된 강의에서 질문해주시기를 부탁드립니다. 😭 (예를 들어 현재 6.15 강의에 대한 질문이 있으신 것이니 6.15 강의의 질문하기 탭을 통해 작성해주시면 됩니다.)

각 행마다 시작 문자가 변하기 때문입니다. 

'FIRST_CHAR + r' 에 해당하는 문자부터 'FIRST_CHAR + NUM_ROWS' 문자까지를 매 행마다 출력을 하게 되는데 

 'FIRST_CHAR + NUM_ROWS' 은 'L' 로 고정되지만

'FIRST_CHAR + r'은 첫번째 for문에 의해 r 값이 매번 1씩 증가하게 되면서 첫 문자가 점점 증가하기 때문에 위와 같이 출력이 된 것입니다.

그래서 두번째 for문에 있는 c의 값은 두번째 for문 내에서 'A' 'B' .... 'L' 이렇게 점점 변화하게 됩니다.

그래서 'A'부터 'L' 까지 출력 / 그 다음 반복에선 'B'부터 'L'까지 출력 ... 이렇게 반복 되는 것입니다.

디버깅 해보시면서 어떻게 반복 진행이 되는지 차근차근 짚어보시는 것을 추천드립니다.