조건문
조건문이란 주어진 조건식의 결과에 따라 별도의 명령을 수행하도록 제어하는 명령문이다
if문
if 문은 조건식의 결과가 참(true)이면 주어진 명령문을 실행하고 거짓(false)이면 아무것도 실행하지 않는 조건문을 말한다
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
int main() {
int apple = 4;
if(apple>5){
printf("사과가 5개보다 많습니다");
}
else if (apple>3){
printf("사과가 3개보다 많습니다");
}
else {
printf("사과가 3개보다 적습니다");
}
return 0;
}
출력
1
사과가 3개보다 많습니다
이것이 if문에 형태이다 차근차근 뜯어보면
1
2
3
if(apple>5){
printf("사과가 5개보다 많습니다")
}
if를 적고 괄호 안에 조건을 적는다 여기서 만약 조건이 참이라면 중괄호에 적은 코드를 실행시킨다
1
2
3
else if (apple>3){
printf("사과가 3개보다 많습니다");
}
else if는 if문이 거짓일 때 실행된다 if랑 마찬가지로 괄호 안에 조건을 적고 여기서 만약 조건이 참이라면 중괄호에 적은 코드를 실행 시킨다
앞에서 apple을 4로 선언했으니 해당 조건 참이 되어 중괄호 안 코드인 printf(“사과가 3개보다 많습니다”)가 실행되어 “사과가 3개보다 많습니다”라는 문장이 출력되게 된다
1
2
3
else {
printf("사과가 3개보다 적습니다")
}
여기서 else는 위에 적은 조건들이 모두 거짓일 때 실행되는 곳이다
논리 연산자
논리 연산자인 &&와 | 를 사용하면 if문에 조건을 추가할 수 있는데 |
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
int main() {
int apple = 4;
int banana = 5;
if(apple>5 && banana>4){
printf("과일이 매우 많습니다");
}
else if (apple>5 || banana>4){
printf("과일이 많습니다");
}
else {
printf("과일이 적습니다");
}
return 0;
}
출력
1
과일이 많습니다
차근 차근 코드를 뜯어보자
1
2
3
if(apple>5 && banana>4){
printf("과일이 매우 많습니다");
}
우선 apple>5 && banana>4은 apple이 5보다 크다 와 banana가 4보다 크다는 조건을 모두 만족해야만 참이 된다
1
2
3
else if (apple>5 || banana>4){
printf("과일이 많습니다");
}
apple>5 || banana>4는 apple이 5보다 크다 와 banana가 4보다 크다는 조건 중 하나만 만족해도 참이 된다 그러니 “과일이 많습니다”라는 문장이 출력 된 것이다
조건문에서 자주 쓰는 조건 연산자
- ㅤ>=: 좌변이 우변보다 같거나 크면 참이 된다
- ㅤ>: 좌변이 우변보다 크면 참이 된다
- ㅤ<=: 좌변이 우변보다 작거나 같으면 참이 된다
- ㅤ<: 좌변이 우변보다 작으면 참이 된다
- ㅤ==: 좌변과 우변이 같으면 참이 된다
- ㅤ!=: 좌변과 우변이 다르면 참이 된다
삼항 연산자
삼항 연산자는 if 조건문을 짧게 표현할 수 있는 장점을 가진 연산자이다 하지만 가독성을 해칠 수 있기에 가독성을 해치지 않으면서 코드가 간결해지는 경우에만 삼항 연산자를 써야한다
코드
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
int main(){
int num1 = 5;
int num2;
num2 = num1 ? 100 : 200;
printf("%d\n", num2);
}
출력
1
100
위 코드를 뜯어보자
1
num2 = num1 ? 100 : 200;
이 코드의 의미는 num1이 참이면 num2에 100을 넣고 거짓이면 200을 넣는다는 의미이다 이처럼
삼항연산자는 참 거짓을 판단할 변수를 적고 ? 뒤에 참일 때 값 : 뒤에는 거짓일 때 값으로 생겼다
앞에서 배운 비교 연산자와 함께 사용하면
코드
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main(){
int num1 = 10;
int num2;
num2 = num1 == 10 ? 100 : 200;
printf("%d\n", num2);
}
출력
1
100
해당 코드를 뜯어보자
1
num2 = num1 == 10 ? 100 : 200;
이 코드의 의미는 num1이 만약 10이라면 num2에 100을 넣고 아니라면 200을 넣는다는 의미이다
Switch문
Switch문은 if문과 같은 조건 제어문으로 if랑 달리 <,>,<=,>=등과 같은 범위를 사용할 수 없고 if문은 조건식이 true일 경우에 실행된다고 하면 switch문은 비교할 변수가 어떤값을 가지냐에 따라 실행문을 선택되는 방식이다 ==만 사용하는 if이라고 생각하면 편하다
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
int main() {
int apple = 4;
switch (apple){
case 1:
printf("사과 1개 있습니다");
break;
case 2:
printf("사과 2개 있습니다");
break
case 3:
printf("사과 3개 있습니다");
break
case 4:
printf("사과가 4개 있습니다");
break
default:
break;
}
return 0;
}
출력
1
사과가 4개 있습니다
이것이 switch문에 형태이다
뜯어보면 switch 열 괄호에 변수를 적고 case 옆에 값을 적으면 그 값이 참이면 밑에 문장이 실행되고 거짓이면 실행되지 않는다
만약 case에 값이 모두 거짓이면 default가 실행된다 그리고 switch문을 사용할 때는 case에 실행할 문장과 break를 적어야 한다
위에서는 apple을 4라고 적었으니 case 4:에서 걸려 안에 문장인 printf(“사과가 4개 있습니다”)가 실행되고 break로 탈출한 것이다