c++ 반복문 질문

조회수 607회
#include <iostream>
using namespace std;

int main(){
  const int N=3;
  int i,j;
  for(i=0; i < N; i++){
    for(j=i; j < N; j++){
      cout << i << "  " << j << endl;
    }
  }
}

첫번째 루프를 돌때, i=0이고 여기에 후위연산자가있으니까, j=i이므로 j =1로시작하지않나요?

처음출력문이 (0,1)을 기대했는데 (0,0)이출력되더라구요.

1 답변

  • for문의 괄호에는 3 부분이 있습니다.

    예를 들어 for(A; B ; C) { }에서 A는 for문이 시작되면서 딱 한번 실행됩니다. 그 후 B를 보고 B가 참이면 { } 부분을 실행하고 B가 거짓이면 for문은 종료됩니다. C는 B가 참일 때 { } 부분이 실행된 후에 C가 실행됩니다. 그 후 다시 B가 참인지를 봅니다.

    결국 일반적으로 A->(B와 괄호)->C->(B와 괄호)->C->... 순으로 반복됩니다.

    질문에서 첫 for문의 i=0이 A에 해당하고, B에 해당하는 i<N 조건이 참이면 { }안이 실행되는데 이때 C에 해당하는 i++은 아직 실행이 안 된것이지요. 그러므로 j에 대입되는 i의 값은 이때에는 아직 0입니다.

    • 먼저 답변감사드립니다, 결국 2번째 for문이 루프를 마치면, i++가 적용이되는건가요? 안성훈 2020.10.8 02:57
    • 첫번째 루프의 { }안의 것이 모두 수행된 후에, i++이 실행됩니다. 위 코드는 { }안에 2번째 for문 밖에 없으니 2번째 for문이 종료된 후에 i++이 적용됩니다. 알 수 없는 사용자 2020.10.8 04:17

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)