for문
for문은 대표적인 반복문으로 주로 처리 횟수의 제한이나, 특정 데이터 범위에 대한 처리, 배열 처리 등에 일반적으로 많이 사용합니다.
for문의 구조
for (시작값 설정 부분; 비교부분; 증감부분)
{
// 처리부분
}
하나의 문장으로 된 경우에는 중괄호(block) { ~ }는 생략이 가능합니다.
시작값 설정 부분
대체로 for문의 반복적으로 처리할 데이터의 시작값을 설정하는 부분입니다.
idx = 0 처럼 값의 시작값을 지정합니다. 나열 연산자( , )를 통하여 여러 개의 변수에 대해서 시작값을 설정할 수 있습니다.
비교 부분
처리부분을 수행할 것인지 여부를 판단하는 부분입니다. 이 부분은 주로 비교 연산이 위치합니다.
증감 부분
일반적으로 특정 값만큼 값을 중가시키거나, 감소 시키는 문장이 위치하는 곳입니다.
대체로 idx++ 또는 idx-- 또는 idx += 2 처럼 특정 데이터 단위로 증감이 일어나는 곳입니다.
ex). 100개의 배열 데이터에 대한 합 계산
int idx;
long value[100];
long sum = 0;
for (idx = 0; idx < 100; idx++)
{
sum += value[idx];
}
for문의 실행 순서는 첫 for문 실행할 때의 실행하는 순서는
1). idx = 0; 시작값 설정부분 실행
2). idx < 100 참인지 여부 판단
3). sum += value[idx];
의 순서로 실행이 되고, 2번째 부터는
1). idx++ 증감 부분 실행
2). idx < 100 이 참인지 여부를 판단
3). sum += value[idx];
순서로 실행을 합니다.
for문의 마지막 부분에 있는 idx++을 ++idx로 했을 때, 결과는 다르다고 생각하는 개발자들이 있는 데, 똑같습니다. (idx++은 for문이 1회 끝나고 수행되고 ++idx는 for문이 처음 시작할 때부터 한 번 계산하고 시작한다는 생각을 갖는 분이 가끔 있음)
무한 반복문
for ( ; ; )
{
// 처리 부분
}
위와 같이 표현으로 무한 반복 처리할 수 있습니다. 정확하게는 가운데 부분이 비어 있기만 해도 무한 반복 처리됩니다. 이런 문장의 종료는 내부에서 if ~ else 문 내에 break를 사용하여 중지할 수 있습니다.
예제2). 여러 변수 초기값 설정
int idx;
long sum;
long arr[100];
...
for (idx = 0, sum = 0 ; idx < 100 ; idx++ )
{
sum += arr[idx];
}
위의 예 처럼 for문과 관련된 초기값 설정으로 나열 연산자( , )를 통하여 여러개 할 수도 있으며, 증감부분(idx++)에도 나열 연사자로 구분하여 여러개의 변수를 동시에 증감처리할 수 있습니다.
break 문과 continue문
break문은 for문의 실행을 중단하고 block을 빠져나가라는 용도로 사용합니다.
continue문은 continue 문 아래 부분은 skip하고, 증감 부분으로 이동하여 계속 진행하라는 의미입니다.
예제). 홀수면 무시하고, 짝수면 더하고, 0 이하면 종료
int idx;
long sum;
long arr[100];
......
for(idx = 0, sum = 0; idx < 100; idx++)
{
if(arr[idx] % 2 == 1) {
continue;
} else if(arr[idx] <= 0) {
break;
}
sum += arr[idx];
}
위의 예제는 100 개의 데이터가 저장된 arr 변수에서 데이터가 짝수값이면 합산하고, 홀수이면 버리고, 0이하이면 종료하라는 예제입니다.
continue 부분의 역할은 홀수이면, 즉 2로 나눈 나머지가 1 (arr[idx] % 2 == 1)이면, continue 아래에 있는 로직은 처리하지 말고 증감부분(idx++)부터 다시 시작하라는 의미입니다.
break문은 for문의 실행을 끝내라는 의미입니다.
'C언어 > 문법' 카테고리의 다른 글
17. 반복문 (do ~ while) (0) | 2019.11.04 |
---|---|
16. 반복문 (while) (2) | 2019.11.04 |
14. 조건문 (switch ~ case) (2) | 2019.11.02 |
13. 조건문 (if ~ else if ~ else) (0) | 2019.10.31 |
12. C언어의 연산자(operator) (2) | 2019.10.31 |