[C언어] 5. 조건문
조건문
조건문은 조건에 따라 주어진 조건에 따라서 블럭이 실행되는 구조를 가지고 있습니다.
조건식이 true
인 경우 중괄호 {}
로 묶여 있는 블럭이 실행됩니다.
c언어는 1
을 true
로, 0
을 false
로 인식합니다.
if
if (a == 0) {
a +=1;
}
조건문의 조건은 보통 관계 연산자를 통해 참, 거짓 여부를 비교합니다.
괄호 안에 조건이 참인 경우, 중괄호 블럭을 실행합니다.
if (a == 0) a += 1;
만약 실행블럭이 한 줄인 경우, 중괄호를 생략할 수 있습니다.
함수를 제외하면, 모든 경우에 실행블럭이 한줄인 경우 생략 가능합니다
else
if (a == 0){
a+=1;
}
else {
a = 1;
}
조건문의 조건이 거짓false
인 경우 중괄호의 실행블럭이 실행되는 구문입니다.
else
구문은 if
구문이 있어야 작성이 가능합니다.
if (a == 0) a += 1;
else a = 1;
if
구문과 동일하게 실행블럭이 한 줄인 경우, 중괄호를 생략할 수 있습니다.
else if
if (a == 0){
a += 1;
}
else if(a == 2) {
a -= 1;
}
else {
a = 1;
}
여러가지 조건이 필요한 경우에 작성하는 구문입니다.
else
구문과 마찬가지로, if
구절이 없으면 작성할 수 없습니다.
if
구절 이후, 여러번 작성이 가능합니다.
만약 else if
의 조건에도 참
이 없는 경우, else
의 실행블럭이 실행됩니다.
if (a == 0) a += 1;
else if(a == 2) a -=1;
else a = 1;
다른 구문들과 동일하게 실행블럭이 한 줄인 경우, 중괄호를 생략할 수 있습니다.
삼항 연산자
int i = (a == 1) ? (a) : (a + 1);
(조건) ? ture : false
삼항 연산자는 주로 변수를 초기화 하는 과정에서 사용됩니다.
if
나 switch
처럼 조건이 여러개일때 편리하지 않지만, 적절하게 사용하면 코드의 가독성을 향상시킬 수 있습니다.
예시
int k;
if (a == 0) {
k = 1;
}
else {
k = 2;
}
int k = (a == 0) ? 1 : 2;
위와 아래는 같은 역학을 하는 코드 입니다.
삼항 연산자를 활용하여 if / else
구절을 활용하여 작성하는 경우보다 효율적으로 작성된 것을 볼 수 있습니다.
활용 예제
if (score > 100) {
grade = 'a';
} else if (score > 90) {
grade = 'b';
} else if (score > 80) {
grade = 'c';
} else if (score > 70) {
grade = 'd';
} else {
grade = 'f';
}
조건문 활용 예시로 자주 등장하는 예제입니다.
if
구문의 조건은 위에서 부터 검사하기 때문에, 각 점수에 맞추어 등급이 지정됩니다.
코드에서는 가독성을 위해 else if
로 작성하였지만, 모두 if
로 작성하여도 문제는 없습니다.
if (70 <= score %% score <= 100){
pass = 1;
}
조건에 논리 연산자를 활용하면 조건을 추가할 수 있습니다.
상황에 맞추어 적절하게 사용하시면 되겠습니다.
Switch, case
switch(menu) {
case 0:
printf("apple\n");
break;
case 1:
printf("banana\n");
break;
default:
printf("error\n");
break;
}
switch
구문은 선택절로, 괄호에 int, char 변수를 넣어 활용할 수 있습니다.
변수가 case 옆 변수, 상수와 동일할때 break
를 만나는 시점까지 실행됩니다.
만약 break
를 만나지 않는다면, 모든 케이스의 코드를 실행하기 때문에, 구문이 끝났다면 break
를 작성해야 합니다.
모든 케이스에 변수가 맞지 않다면, default
의 실행 블럭을 실행합니다.
함수에서의 switch
char setGrade(int score) {
switch(score) {
case 5:
return 'a';
case 4:
return 'b';
}
return 'f';
}
이후 설명할 함수에선 return(함수 종료 코드)
를 break
대신 작성할 수 있습니다.
💡 지적 환영합니다
Comments