|
|||||||||
중첩 if 문에 대해서 좀더 생각해보자. 다음의 중첩 if 문을 생각해보자.
위의 중첩 if 문에서 else는 어느 if 문에
해당되는가? C에서 공백은 무시되므로, 여러분은 다음과 같이 두 가지로 생각할 수 있다.
왼쪽의 경우는 else가 가까운 안쪽 if에 걸리는 경우이고, 오른쪽이 경우는 else가 바깥쪽 if에 걸리는 경우이다. 여러분이 잘 알겠지만, else가 어느 if에 걸리는가에 따라서 그 의미가 달라진다: 왼쪽의 경우 age ≥ 10이고 height ≥ 120인 경우에 행동 B가 수행되는 것임에 반해서, 오른쪽의 경우에는 age ≥ 10이면 행동 B가 수행된다. 프로그램의 의미가 명확하려면 else가 어느 if에 걸리는지가 명확해야 한다. C는 위의 경우에 왼쪽의 경우를 선택한다. 즉, 짝이 불분명한 else는 가장 가까운 if와 짝이 이루어진다. 여러분은 다음과 같이 중괄호를 사용하여 else의 if 짝을 명확하게 명시할 수 있다.
가령, 고려해야 할 변수가 age, height,
weight일 경우에, 다음의 순서도 구조를 생각할 수 있다. ![]() 위의 순서도에 대한 C 프로그램 버전의 if 문은 다음과 같은 형태일 것이다.
위에서 age의 변수를 포함한 조건 식을 갖는 가장 외곽에 위치한 if 문을 중첩 수준 1을 갖는다고 하고, height의 변수를 포함한 조건 식을 갖는 if 문을 중첩 수준 2를 갖는다고 하고, weight의 변수를 포함한 조건 식을 갖는 가장 안쪽에 위치한 if 문을 중첩 수준 3을 갖는다고 한다. 여러분은 임의의 중첩 수준을 갖는 if 문을 작성할 수도 있으나, 중첩 수준이 3을 넘어설 경우에 프로그램의 이해도가 떨어지므로
가급적 사용하지 않는 것이 바람직하다.
|
![]() |
|