[C언어] 조건문과 제어문 완벽 이해하기 - If, Switch, Goto
C언어 5장: 조건문과 제어문 완벽 이해하기 - If, Switch, Goto문
1. If 문 (조건문)
If 문은 C언어에서 가장 기본적이고 중요한 조건문으로, 특정 조건이 참일 때 코드 블록을 실행하는 데 사용합니다.
형식은 다음과 같습니다:
if (조건식) {
// 조건식이 참일 때 실행될 문장
} else {
// 조건식이 거짓일 때 실행될 문장 (선택적)
}
예제:
int score = 85;
if (score >= 90) {
printf("A학점입니다.\n");
} else if (score >= 80) {
printf("B학점입니다.\n");
} else {
printf("C학점 이하입니다.\n");
}
위 예제에서 score
가 80 이상 90 미만일 경우 "B학점입니다."가 출력됩니다.
1-1. 문자 입력받기: getchar()
문자를 입력받을 때는 getchar()
함수를 주로 사용합니다. 이 함수는 키보드로부터 한 문자를 입력받아 반환합니다.
#include <stdio.h>
int main() {
char ch;
printf("문자 하나를 입력하세요: ");
ch = getchar(); // 한 문자 입력 받기
printf("입력한 문자는 '%c'입니다.\n", ch);
return 0;
}
getchar()
는 입력 버퍼에서 한 문자를 읽어 들여 바로 반환하므로, 사용자 입력을 실시간으로 처리할 때 유용합니다.
2. Switch 문 (다중 선택 조건문)
Switch 문은 여러 가지 경우 중 하나를 선택해 실행하는 조건문입니다. if-else 문을 많이 사용하지만, 조건이 정수형 값 여러 개일 때 switch문이 더 간결하고 효율적입니다.
기본 문법:
switch (수식) {
case 값1:
// 값1일 때 실행할 문장
break;
case 값2:
// 값2일 때 실행할 문장
break;
// ...
default:
// 위 모든 case에 해당하지 않을 때 실행
}
중요! switch 문의 수식은 반드시 정수형 (int, char 등)이어야 하며, 실수형(double, float)은 사용할 수 없습니다.
예제:
char grade = 'B';
switch (grade) {
case 'A':
printf("훌륭합니다!\n");
break;
case 'B':
printf("잘 했습니다.\n");
break;
case 'C':
printf("노력하세요.\n");
break;
default:
printf("잘못된 학점입니다.\n");
}
위 예제에서 grade
값이 'B'이므로 "잘 했습니다."가 출력됩니다.
break;
문이 없으면 해당 case부터 모든 아래 case 문장들이 연속 실행되므로 주의해야 합니다.
2-1. Switch 문의 장점과 주의점
- 여러 경우의 수를 명확하게 구분해 코드 가독성이 높아집니다.
- 정수형 비교에 특화되어 빠르게 분기 처리가 가능합니다.
default
는 모든 case에 해당하지 않을 때 실행되는 부분으로 필수는 아니지만 넣는 것이 좋습니다.- case 값은 중복 불가하며, 정수 상수나 문자 상수만 가능합니다.
3. Goto 문 (비추천하지만 알아두면 좋은 제어문)
goto
문은 프로그램 실행 흐름을 특정 위치로 직접 이동시키는 제어문입니다. 일반적으로 가독성과 유지보수성 때문에 많이 권장되지 않지만, 특정 상황에서는 유용하게 사용될 수 있습니다.
문법:
label_name:
// 실행할 문장들
...
goto label_name; // label_name 위치로 점프
예제: 무한 루프 만들기
#include <stdio.h>
int main() {
int count = 0;
loop_start:
printf("count = %d\n", count);
count++;
if (count < 5) {
goto loop_start; // loop_start로 돌아감
}
printf("종료\n");
return 0;
}
위 예제는 goto
를 활용해 count가 5 미만일 동안 루프를 반복하는 코드입니다. 하지만 이런 코드는 가독성이 떨어져 for
나 while
문을 사용하는 것이 일반적입니다.
3-1. Goto문 사용 시 주의사항
- 코드 흐름이 복잡해지고 이해하기 어려워질 수 있습니다.
- 잘못 사용하면 디버깅이 어려운 버그가 발생할 수 있습니다.
- 최대한
for
,while
,if
,switch
등 구조화된 제어문 사용 권장
이번 장에서는 조건문과 제어문의 핵심인 If 문과 Switch 문, 그리고 자주 권장되진 않지만 알아두면 도움이 되는 Goto 문까지 폭넓게 살펴보았습니다.
다양한 조건 분기와 흐름 제어를 이해하면 더욱 견고하고 효율적인 프로그램을 작성할 수 있습니다.
다음 장에서는 반복문과 함수에 대해 자세히 알아보겠습니다!