조건문은 말 그대로 어떠한 조건을 설정하고 그에 맞는 코드를 실행하고자 사용합니다.
그 중 대표적으로 if문과 switch case문을 알아보고자 합니다.
if, 만약에~ 라는 뜻처럼 특정 조건을 검사하여 코드를 실행시키게 하는 문법입니다.
if문은 if만 쓰이기도 하고, if~else, if~else if~else 로 쓰이기도 합니다.
아래 예제를 보시죠.
#include <stdio.h>
int main(void)
{
short sval = 123;
int ival = 1234;
long lval = 1234;
char cval = 'a';
float fval = 3.14;
double dval = 3.1415;
int scanf_val = 0;
// operator
int plus = 0;
int minus = 0;
int iftest = 3;
printf("sval: %d\n", sval);
printf("ival: %d\n", ival);
printf("lval: %ld\n", lval);
printf("cval: %c\n", cval);
printf("fval: %f\n", fval);
printf("dval: %lf\n", dval);
scanf("%d", &scanf_val);
printf("result: %d\n", scanf_val);
// operator
plus = ival + lval;
printf("plus: %d\n", plus);
minus = ival - lval;
printf("minus: %d\n", minus);
if (iftest == 3) {
printf("제어문 확인: %d\n", iftest);
}
if (iftest == 3) {
printf("제어문 확인2: %d\n", iftest);
}
else {
printf("제어문 확인2: %d\n", iftest);
}
if (iftest == 3) {
printf("제어문 확인3: %d\n", iftest);
}
else if (iftest == 4) {
printf("제어문 확인3: %d\n", iftest);
}
else {
printf("제어문 확인3: %d\n", iftest);
}
switch (iftest) {
case 1:
printf("switch~case 1번\n");
break;
case 2:
printf("switch~case 2번\n");
break;
case 3:
printf("switch~case 3번\n");
break;
default:
printf("switch~case 3번\n");
break;
}
return 0;
}
iftest 라는 정수형 변수에 3이란 값을 대입하면서 초기화 했습니다.
if (iftest == 3) 이란? "iftest가 3과 동일하다면" { } 괄호 안에 있는 코드를 실행하라 라는 뜻 입니다.
조건이 여러개라면 if ~ else if ~ else 를 사용합니다.
예시보다도 더 많은 조건이 필요하다면 else if 를 여러개 사용하시면 됩니다.
if문 하나만 써도 되고, 혹시 모를 상황을 대비해 else를 예방 차원에서 쓰기도 합니다.
사용법은 아래와 같습니다.
if (조건)
{
// 내용
}
else if에도 (조건)이 필요하고, else에는 조건을 쓰지 않습니다.
만약 쓴다면 문법 오류로 빌드 오류가 발생합니다.
내용이 한 줄인 경우 괄호는 생략이 가능합니다. 예를들면 아래와 같습니다.
if (iftest == 3)
printf("test1\n");
else if (iftest == 4)
printf("test2\n");
else
printf("test3\n");
else if 로 분류할 것이 많다면 switch문을 쓰기도 합니다.
보통 switch case문이라고 부르며, 예시는 아래 코드 하단부에 있습니다.
#include <stdio.h>
int main(void)
{
short sval = 123;
int ival = 1234;
long lval = 1234;
char cval = 'a';
float fval = 3.14;
double dval = 3.1415;
int scanf_val = 0;
// operator
int plus = 0;
int minus = 0;
int iftest = 3;
printf("sval: %d\n", sval);
printf("ival: %d\n", ival);
printf("lval: %ld\n", lval);
printf("cval: %c\n", cval);
printf("fval: %f\n", fval);
printf("dval: %lf\n", dval);
scanf("%d", &scanf_val);
printf("result: %d\n", scanf_val);
// operator
plus = ival + lval;
printf("plus: %d\n", plus);
minus = ival - lval;
printf("minus: %d\n", minus);
if (iftest == 3) {
printf("제어문 확인: %d\n", iftest);
}
if (iftest == 3) {
printf("제어문 확인2: %d\n", iftest);
}
else {
printf("제어문 확인2: %d\n", iftest);
}
if (iftest == 3) {
printf("제어문 확인3: %d\n", iftest);
}
else if (iftest == 4) {
printf("제어문 확인3: %d\n", iftest);
}
else {
printf("제어문 확인3: %d\n", iftest);
}
switch (iftest) {
case 1:
printf("switch~case 1번\n");
break;
case 2:
printf("switch~case 2번\n");
break;
case 3:
printf("switch~case 3번\n");
break;
default:
printf("switch~case 3번\n");
break;
}
return 0;
}
사용법은 아래와 같습니다.
switch (조건에 사용할 변수 등)
{
case 값:
printf("test1\n");
break;
case 값:
printf("test2\n");
break;
default:
printf("test3\n");
break;
}
if문을 쓴다면 iftest == 3 처럼 조건을 매번 써줘야 하지만
switch case를 사용하면 조건을 확인할 변수를 설정해 두고
case에 값을 써서 확인할 수 있습니다.
default는 case문에 해당하는 것이 모두 없을 경우 기본값으로 출력해주는 용도이며,
앞서 if문에서 else를 보호 차원에서 쓰는 것과 동일한 역할입니다.
따라서 default는 안써줘도 되지만 else와 다르게 default는 꼭 써주는 것이 관례입니다.
안썼다가 걸리면... 제대로 공부 안했다는 소리를... ㅎㅎ;;
if문이 좋으냐 switch case문이 좋으냐 라고 가끔 논쟁하는 경우도 있는데
개발 환경에 맞게 쓰시면 됩니다 ㅎㅎ
실제로 해외에서는 효율성 측면으로 연구한 것이 있는데
if, else if가 3개가 넘어간다면 switch case가 더 나을 수 있다
라는 결과가 나왔다네요.
조건이 많지 않다면 if문이 더 효율이 좋다는 얘기입니다 ㅎ
오늘은 if문 switch case문을 알아봤습니다!
오늘 예제의 결과는 아래와 같습니다~
'프로그래밍 > C언어' 카테고리의 다른 글
c언어 - 배열 (0) | 2023.08.13 |
---|---|
c언어 - 반복분(for, while) (0) | 2023.07.28 |
c언어 - 연산자 (0) | 2023.07.01 |
c언어 - 입력받기, 출력하기 (0) | 2023.06.29 |
C언어 - 자료형과 변수 (36) | 2023.06.26 |