단순 반복을 할 때 일일이 코딩하기엔 비효율적이고 정적이다.
반복문 for을 쓰면 자동으로 워하는 횟수만큼 반복할 수 있다.
for (초기식; 조건식; 변화식) -> 루프 선언문(loop statement)
{
반복할 코드 -> 루프 본체(loop body)
}
이렇게 2번 -> 3번 -> 4번을 루프 돌면서 변화식으로 인해 조건식이 거짓이 될때까지 수행한다.
여기서 중요한건 초기식은 동작과정 중 한 번 수행되지만 조건식은 반복횟수마다 판별한다.
!문제!
만약 조건식에 strlen(arr)같은 함수를 넣는다면 조건식 판별을 할 때마다 조건식 안에 있는 함수를 실행해야 하기 때문에 속도에 지장을 줄 수있다.
!해결법!
이것의 해결법으로 for문 전 함수 결과값을 변수에 넣고 조건식에 사용하는 것이 있다.
루프 선언문 뒤에 세미콜론(;)을 붙이고 그 후 루프 본체를 작성시, 실제 작동할 때는 세미콜론 이후 루프 본체는 for문에서 분리되어 따로 보기 때문이다.
if문 처럼 반복할 코드가 1줄 이하이면 가능하지만 2줄 이상부터 for문과 분리하여 보기 때문에 반복하지 않는다.
for (int i=0; i<100; i++)
printf("%d 번\n", i);
이처럼 한줄이면 100번 반복하고 printf문 이후부턴 for문에 적용되지 않는다.
for반복문에 사용할 초기값이 준비되어 있으면 초기식에서 초기값을 설정할 필요가 없기 때문에 비울 수 있다.
int i = 0;
for (; i<100; i++)
{
}
이 방식을 입력받은 변수로도 사용가능하다.
int main()
{
for (int i=0, j=0; i < 10; i++, j+=2)
{
printf("i : %d, j: %d\n", i, j);
}
}
초기식에서 두 변수를 선언 후 조건식에선 둘 중 하나로 조건 정하고 변화식에서 원하는대로 증가시킬 수 있다.
위 코드는 i++로 1씩, j+=2로 2씩 증가시켰다.