안녕하세요 피터입니다.
오늘은 C언어의 조건문에 대해 알려드리겠습니다.
주어진 조건에 따라 분기한다고 해서 분기문이라고도 하는데요, 아래와 같이 크게 세가지 종류가 있습니다.
- If / Else
- Switch / Case
- ? operator
동작 원리는 거의 같지만 가독성이나 코드의 유연성을 고려하여 상황에 따라 적절하게 사용하시면 됩니다.
1. If / Else
if 구문의 기본적인 문법은 다음과 같습니다.
if(condition)
statement;
위 코드를 "만일(if) 조건이 만족하면 statement를 실행하시오." 라고 이해하시면 됩니다.
조건이 만족하는 기준은 condition이 참(true)가 되는 경우입니다.
C언어에서 조건문의 참(true)은 0이 아닌 모든 수가 해당되며,
반대가 되는 거짓(false)는 0입니다.
따라서 if(1) 은 참이 되고, if(100)도 참이 됩니다.
오로지 if(0)인 경우에만 해당 statement가 실행되지 않습니다.
의미를 분명하게 하기 위해 아래와 같이 상수로 정의하여 사용하기도 합니다.
#define TRUE 1
#define FALSE 0
if(TRUE)
statement;
else 구문은 if(condition)이 만족하지 못하는 모든 경우에 실행됩니다.
if(age >= 19) printf("You are adult\n");
else
printf("You are minor\n");
분기해야 할 조건이 여러개인 경우에는 아래와 같이 else if 구문을 사용할 수 있습니다.
if(type == 1)
printf("Text type\n");
else if(type == 2)
printf("Image type\n");
else if(type == 3)
printf("Video type\n");
else
printf("nvalid type\n");
2. Switch / Case
Switch-Case 구문의 기본 문법은 아래와 같습니다.
switch(variable) { case value1: statement; break;
case value2: statement; break;
default: statement; }
swich 구문에서 분기에 사용할 변수(variable)를 설정한 뒤 case 구문에서 각 value에 대한 루틴을 설정하면 분기합니다.
주의하셔야 할 부분은 case 구문에서 break; 구문인데요. break 를 쓰지 않으면 밑에 있는 case 구문까지 실행이 되어버리니 의도하지 않은 결과가 나올 수 있습니다.
아래 예제는 위의 if-else 구문으로 되어 있는 코드를 switch-case 구문으로 변환한 코드입니다. 참고해주세요~
switch(type)
{
case 1:
printf("Text type\n");
break;
case 2:
printf("Image type\n");
break;
case 3:
printf("Video type\n");
break;
default:
printf("Invalid type\n");
}
3. ? operator
? (물음표) 연산자는 3개의 항이 요구되기 때문에 "삼항연산자" 라고도 불리며, 조건식을 수행하기 때문에 "조건부연산자" 라고도 합니다.
좀 더 단순하게 활용이 가능한데요. 기본 문법은 다음과 같습니다.
(condition)?a:b;
boolean 값을 갖는 조건식(condition) 뒤에 ? 연산자가 오고 그 뒤에 A:B 와 같이 콜론(:)으로 구분되는 값이 2개 오게 됩니다.
조건식의 결과가 참(True)인 경우 연산의 결과가 a 가 되구요, 거짓(False)인 경우 b가 되게 됩니다.
아래 예제와 같이 활용하면 코드를 좀 더 단순화 할 수 있습니다.
printf("%s\n", (age>=19)?"Adult":"Minor");
여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다.
-Peter의 우아한 프로그래밍
'프로그래밍 > C' 카테고리의 다른 글
[C언어 강좌-10] 배열 (Array) (0) | 2018.05.11 |
---|---|
[C언어 강좌-9] 반복문 (Loop) (0) | 2018.05.04 |
[C언어 강좌-7] 연산자 (Operator) (0) | 2017.02.27 |
[C언어 강좌-6] 기억 영역 분류 (Storage Class: auto, register, static, extern) (1) | 2017.02.25 |
[C언어 강좌-5] 상수 (Constant) (0) | 2017.01.26 |