C 언어의 조건문은 프로그램의 흐름을 제어하는 데 사용됩니다. 조건문을 통해 특정 조건에 따라 코드 블록을 실행하거나 건너뛸 수 있습니다. C 언어에서 기본적인 조건문은 if, else if, else, 그리고 switch입니다.
1. if 문
if 문은 주어진 조건이 참일 때 코드 블록을 실행합니다.
if (조건) {
// 조건이 참일 때 실행될 코드
}
예시:
int num = 10;
if (num > 0) {
printf("num은 양수입니다.\n");
}
2. if-else 문
if-else 문은 조건이 참일 때와 거짓일 때 각각 다른 코드를 실행합니다.
if (조건) {
// 조건이 참일 때 실행될 코드
} else {
// 조건이 거짓일 때 실행될 코드
}
예시:
int num = -5;
if (num > 0) {
printf("num은 양수입니다.\n");
} else {
printf("num은 음수입니다.\n");
}
3. else if 문
else if 문을 사용하면 여러 조건을 순차적으로 검사할 수 있습니다.
if (조건1) {
// 조건1이 참일 때 실행될 코드
} else if (조건2) {
// 조건1이 거짓이고 조건2가 참일 때 실행될 코드
} else {
// 위 모든 조건이 거짓일 때 실행될 코드
}
예시:
int score = 85;
if (score >= 90) {
printf("A 학점입니다.\n");
} else if (score >= 80) {
printf("B 학점입니다.\n");
} else if (score >= 70) {
printf("C 학점입니다.\n");
} else {
printf("D 학점입니다.\n");
}
4. switch 문
switch 문은 하나의 변수 값을 여러 값과 비교하여 해당하는 코드 블록을 실행합니다.
switch (변수) {
case 값1:
// 값1과 일치할 때 실행될 코드
break;
case 값2:
// 값2와 일치할 때 실행될 코드
break;
default:
// 모든 값과 일치하지 않을 때 실행될 코드
}
예시:
int day = 3;
switch (day) {
case 1:
printf("월요일\n");
break;
case 2:
printf("화요일\n");
break;
case 3:
printf("수요일\n");
break;
default:
printf("알 수 없는 요일\n");
break;
}
위 예시에서, day가 3이므로 "수요일"이 출력됩니다.
C 언어에서 switch 문은 주로 정수형(integer) 값에 대해 동작합니다. 정확히 말하자면, switch 문에서 사용할 수 있는 값의 유형은 다음과 같습니다:
int (정수형)
char (문자형, 내부적으로 정수로 취급됨)
enum (열거형, 기본적으로 정수로 간주됨)
switch 문에서 조건 표현식으로 사용할 수 있는 값은 정수 타입으로 한정됩니다. 이는 다음과 같은 이유 때문입니다:
switch 문은 특정 값과 매칭되는 케이스를 찾기 위해 정수 값을 기반으로 분기합니다.
내부적으로 switch 문은 각 case 값에 대해 점프 테이블(jump table)을 생성하여 빠른 분기 처리를 하기 때문에, 이러한 구조는 정수 기반으로 최적화되어 있습니다.
사용할 수 없는 데이터 타입
switch 문에서는 다음과 같은 데이터 타입을 사용할 수 없습니다:
float, double 등 실수형
string (문자열)
복합 타입 (배열, 구조체 등)
예를 들어, 다음과 같은 코드는 오류를 발생시킵니다:
float num = 3.14;
switch (num) { // 컴파일 에러 발생
case 1.0:
printf("1.0입니다.\n");
break;
case 3.14:
printf("3.14입니다.\n");
break;
}
실수형 데이터 타입은 정밀도 문제와 점프 테이블을 구성하는 데 적합하지 않기 때문에 지원되지 않습니다.
char 데이터 타입의 사용
char 값이 내부적으로 정수로 변환되기 때문에 사용할 수 있습니다:
char grade = 'B';
switch (grade) {
case 'A':
printf("우수\n");
break;
case 'B':
printf("좋음\n");
break;
case 'C':
printf("보통\n");
break;
default:
printf("등급을 알 수 없음\n");
break;
}
이 예제는 정상적으로 동작하며, 각 문자 값은 정수값으로 변환되어 처리됩니다.
요약
if 문: 조건이 참일 때만 코드 실행.
if-else 문: 조건이 참/거짓에 따라 다른 코드 실행.
else if 문: 여러 조건을 순차적으로 검사.
switch 문: 변수의 값을 여러 케이스와 비교하여 코드 실행.
examples
example 1
example 2
example 3
example 4
example 5
example 6
example 7
example 8 *
example 9 *
filename : quad_eq.c
gcc quad_eq.c -o quad_eq -lm
example 10
example 11
example 12