작성
·
135
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
안녕하세요.
먼저 다음에 질문 주실 땐 연관된 강의에서 질문해주시기를 부탁드립니다. 😭 (예를 들어 현재 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'까지 출력 ... 이렇게 반복 되는 것입니다.
디버깅 해보시면서 어떻게 반복 진행이 되는지 차근차근 짚어보시는 것을 추천드립니다.