다음을 통해 공유


for Statement (C)

for 문을 사용하면 지정한 횟수만큼 문 또는 복합 문을 반복할 수 있습니다. for 문의 본문은 선택적 조건이 false가 될 때까지 0번 이상 실행됩니다. for 문 내에 선택적 식을 사용하여 for 문의 실행 중 값을 초기화하고 변경할 수 있습니다.

구문

iteration-statement:
for ( init-expressionopt ; cond-expressionopt ; loop-expressionopt ) statement

for 문의 실행 절차는 다음과 같습니다.

  1. init-expression(있는 경우)이 계산됩니다. 이는 루프에 대한 초기화를 지정합니다. init-expression의 형식에 대한 제한은 없습니다.

  2. cond-expression(있는 경우)이 계산됩니다. 이 식에는 산술 또는 포인터 형식이 있어야 합니다. 이 식은 각 반복 전에 계산됩니다. 세 가지 결과가 나타날 수 있습니다.

    • cond-expressiontrue(0이 아님)일 경우 statement이 실행된 다음 loop-expression(있는 경우)이 계산됩니다. 각 반복 후 loop-expression이 계산됩니다. 해당 형식에 대한 제한은 없습니다. 의도하지 않은 결과가 순서대로 실행됩니다. 그런 다음 cond-expression이 계산되며 프로세스가 다시 시작됩니다.

    • cond-expression을 생략할 경우 cond-expression이 true로 간주되고 이전 단락의 설명에 따라 실행이 진행됩니다. for 인수가 없는 cond-expression 문은 문 본문 내의 break 또는 return 문이 실행되거나 goto 문 본문 외부에 있는 레이블 문으로의 for가 실행될 때만 종료됩니다.

    • cond-expressionfalse(0)일 경우 for 문의 실행이 종료되고 프로그램의 다음 문으로 제어가 전달됩니다.

for 문은 문 본문 내의 break, goto 또는 return 문이 실행될 때도 종료됩니다. continue 루프에 for 문을 사용하면 loop-expression이 계산됩니다. break 루프 내에서 for 문이 실행되면 loop-expression이 계산 또는 실행되지 않습니다. 다음 문은

for( ; ; )

break, goto 또는 return 문을 사용해야만 종료할 수 있는 무한 루프를 생성하는 일반적인 방법입니다.

예제

이 예제에서는 for 문에 대해 설명합니다.

// c_for.c
int main()
{
   char* line = "H e  \tl\tlo World\0";
   int space = 0;
   int tab = 0;
   int i;
   int max = strlen(line);
   for (i = 0; i < max; i++ )
   {
      if ( line[i] == ' ' )
      {
          space++;
      }
      if ( line[i] == '\t' )
      {
          tab++;
      }
   }

   printf("Number of spaces: %i\n", space);
   printf("Number of tabs: %i\n", tab);
   return 0;
}

출력

Number of spaces: 4
Number of tabs: 2

참조