for 문 (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로 간주되고 이전 단락의 설명에 따라 실행이 진행됩니다. cond-expression 인수가 없는 for 문은 문 본문 내의 break 또는 return 문이 실행되거나 for 문 본문 외부에 있는 레이블 문으로의 goto가 실행될 때만 종료됩니다.

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

    for 문도 문 본문 내에서 break, goto 또는 return 문이 실행될 때 종료됩니다. for 루프의 continue 문으로 인해 loop-expression이 계산됩니다. for 루프 내에서 break 문이 실행되면 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  

참고 항목