본문 바로가기

C 언어/임베디드 C

다중 if문

if문이나 if-else문에서는 if절이나 else절 내에 또 다른 if문이 들어가는 다중 if문이 되는 경우가 흔히 있다.
예)

#include <stdio.h>

int main()
{
 int score;
 char grade = 'X'; //grade를 미리 초기화 한다.
 printf("Please enter examination score: ");
 scanf("%d", &score);
 if((score<=100) && (score>=90)) grade = 'A';
 else if((score<90) && (score>=80)) grade = 'B';
 else if((score<80) && (score>=70)) grade = 'C';
 else if((score<70) && (score>=60)) grade = 'D';
 else if((score<60) && (score>=0)) grade = 'F';
 else printf("wrong score\n");
 printf("The grade is %c\n", grade);
 return 0;
}
 
결과
Please enter examination score : 80
The grade is B


Please enter examination score : 999
wrong score
The grade is X

- if((score<=100) && (score>=90))
논리연산자 &&를 이용한 논리식으로 두조건이 모두 만족되어야 참이 된다.

- else if ((score<90)&&(score>=80)) grade 'B';
여기서 else절 내의 if문은 마지막 else절에서 끈이 나는 하나의 명령문이다. 따라서 else절 내의 if문은 중괄호로 표시할 필요가 없다. 이렇게 중첩된 if-else문의 들여쓰기는 일반적으로 다음과 같다.
 if((score<=100) && (score>=90)) grade = 'A';
 else if((score<90) && (score>=80)) grade = 'B';
 else if((score<80) && (score>=70)) grade = 'C';
 else if((score<70) && (score>=60)) grade = 'D';
 else if((score<60) && (score>=0)) grade = 'F';

- char grade = 'X';
만약 grade를 초기화하지 않으면 score값의 입력이 잘못된 경우에 grade가 미정값을 가지기 때문에 printf문에서 예상할 수 없는 값을 출력할 수 있다.

이 예제에서 점수가 60점 이하일 경우는 F를 받게 된다. 만약 점수가 100점이 넘을 경우는 X를 받게 된다.
만약 100점이 넘을 경우는 X를 받게 된다. 일반적으로 시험점수는 0점에서 100점 사이지만 사용자가 실수로 100점 이상의 점수를 입력할 수 있다. 이런 사용자의 실수가 있을 경우 프로그램이 종료되든지 실행시간 오류를 일으키지 않도록 프로그램이 대비되어야 한다.
사용자의 이런 비정상적인 입력에도 프로그램이 정상적으로 작동하는 것을 프로그램의 강건성(robustness)라고 한다. 프로그램을 항상 강건하게 작성하도록 유의해야한다.

'C 언어 > 임베디드 C' 카테고리의 다른 글

switch문(2)  (0) 2011.04.05
switch문(1)  (0) 2011.04.04
if-else문  (0) 2011.04.04
플로우차트(흐름도)  (0) 2011.04.04
if문  (0) 2011.04.04