이번에는 반복문 중 하나인 for 문의 생략 가능한 부분과 무한루프에 대해서 알아보도록 하겠습니다.
1. for 문 에서의 생략
저번 글에서 for 문의 구조는 for ( 초기식 ; 조건식 ; 증감식 ) 이렇게 된다고 글을 작성 했었습니다.
하지만 이러한 초기식, 조건식, 증감식을 '생략' 하고 사용할 수 있습니다.
예제를 통해서 알아보도록 하겠습니다.
위의 예제는 입력 받은 값들의 평균을 출력 해주는 예제입니다.
* num++; 은 평균 계산을 위해 작성한 부분이고, (num - 1)은 조건식의 input>=0.0이 아닐 경우 음수의 값은 평균 계산에서 제외 시키기 위한 부분입니다.
평균 계산을 원하는 값들을 계속 입력 받아야 되고, 사용자가 원하는 시기에 음수 값을 입력해서 평균을 계산하는 소스입니다.
위의 예제의 경우 for( 초기식 ; 조건식 ; 증감식 ) 에서 초기식, 증감식 이 생략 되었습니다.
생략 해준 이유는 간단하게 말하면 필요 없기 때문입니다.
input 값은 사용자로 부터 값을 입력 받아서 입력 받을 때마다 해당 값으로 초기화가 되고, 사용자가 언제 입력을 종료할지 모르기 때문에 초기화를 필요로 하는 초기식 및 조건식을 충족시키기 위한 증감식 또한 필요하지 않게 됩니다.
따라서 초기식과 증감식은 필요하지 않기에 생략을 하고, 조건식만 충족시켜서 반복문을 탈출하면 되기에 조건식만 입력한 경우입니다.
2. for 문의 무한루프
이번 글의 첫 번째 주제에서 초기식, 증감식의 생략을 보고, 조건식도 생략 가능하지 않을까? 라는 궁금증을 가지시는 분도 계실겁니다.
당연히 생략 가능합니다.
예제를 통해서 알아보도록 하겠습니다.
위의 예제에서 조건식의 생략이 가능한 것을 알 수 있습니다.
또한 예제에서 확인 가능한 것은 다음과 같습니다.
1) 초기식 생략 가능
2) 조건식 생략 가능
3) 증감식 생략 가능
4) 무한루프 발생
이로써 초기식, 조건식, 증감식 의 생략이 모두 가능한 것을 알 수 있습니다.
하지만 여기서 궁금증을 가지시는 분들이 계실 겁니다.
조건식의 생략에 대해서 제대로 설명이 안 되어 있네? 갑자기 무한루프는 왜 나왔지? 라는 생각을 하시는 분 당연히 계실 겁니다.
while 문, do~while문에 대해서 글을 올리면서 반복문의 조건식이 항상 '참'이 되면 반복문을 탈출하지 못 하고, 무한루프를 형성하게 된다라는 글을 올렸었습니다.
이 때, while 문과 do~while 문에서는 조건식에 0을 제외한 '참'을 나타내는 값 중 대표인 '1'을 사용해서 조건이 항상 참이도록 했었습니다.
하지만 for 문에서는 조건식을 '생략' 함으로 써 무한루프를 형성하게 됩니다.
물론 변수 선언 해주고 해당 변수의 값을 1로 지정 해주고 조건식을 써줘서 for 문의 무한루프를 형성해도 됩니다.
하지만 for 문의 경우 생략이 가능한데, for 문에서의 조건식을 생략할 경우 조건을 항상 '참'으로 인식하게 됩니다.
따라서 for 문의 조건식을 생략할 경우 무한루프를 형성하게 됩니다.
또한 for 문에서 조건식을 사용하기 복잡하거나 까다로울 경우 추후 올릴 예정인 if 조건문과의 연관성이 있습니다. if 문으로 조건을 걸어서 무한루프의 반복문을 탈출하는 경우도 있습니다.
이것으로 for 문의 생략과 무한루프에 대하여 알아보았습니다.
다음에는 for 문의 중첩과 다른 반복문들의 중첩에 대하여 글을 올리도록 하겠습니다.
'프로그래밍 언어 > C' 카테고리의 다른 글
C언어 조건문 - if 문 (1) (0) | 2017.01.26 |
---|---|
C 언어 반복문의 중첩 (0) | 2017.01.15 |
C언어 반복문 - for문 (1) (0) | 2017.01.12 |
C언어 반복문 - do~while문 (0) | 2017.01.09 |
C언어 반복문 - while문(2) (0) | 2017.01.02 |