13. else
1. 키워드
else
- 분기(Branch)
2. else
를 사용하여 두 방향으로 분기하기
if
조건문은 분기를 위한 문법이다.- 즉, 분기는 프로그램의 흐름을 둘 이상으로 나누는 것을 말한다.
- 지금까지
if
조건문의 조건식에 만족하는 코드만 실행했다. if
에else
를 사용하면 조건식이 만족할 때와 만족하지 않을 때 각각 다른 코드를 실행할 수 있다.
3. else
사용하기
else
는if
조건문 뒤에 오며 단독으로 사용할 수 없다.
- 다음 내용을 입력한 뒤 실행해 보자.
#include <stdio.h>
int main()
{
int num1 = 5;
if (num1 == 10)
{
printf("10입니다.\n");
}
else // if의 조건식이 만족하지 않을 때 코드를 실행
{
printf("10이 아닙니다.\n"); // num1은 10이 아니므로 "10이 아닙니다."가 출력됨
}
return 0;
}
else
는if
의 조건식이 만족하지 않을 때 코드를 실행한다.- 여기서는
num1
에5
가 들어있어서num1 == 10
을 만족하지 않으므로else
의printf
가 실행되어"10이 아닙니다."
가 출력된다.
- 보통
if
의 조건식이 만족하면 참, 만족하지 않으면 거짓이라고 부른다. - 즉, 조건식이 참이면
if
의 코드가 실행되고, 거짓이면else
의 코드가 실행된다.
4. else
와 세미콜론
if
와 마찬가지로else
도;
(세미콜론)을 붙이지 않도록 주의해야 한다.
#include <stdio.h>
int main()
{
int num1 = 10;
if (num1 == 10)
{
printf("10입니다.\n");
}
else; // else에 세미콜론을 붙이면 안 됨
{
printf("10이 아닙니다.\n"); // else에 세미콜론을 붙였으므로 if의 결과와는 관계 없이 항상 실행됨
}
return 0;
}
// 10입니다.
// 10이 아닙니다.
else
에;
을 붙여버리면 그 뒤에 오는 코드와는 관계가 없어져 버린다.- 따라서 조건식의 결과와는 관계없이 항상 실행된다.
5. else
에서 중괄호 생략하기
else
도if
와 마찬가지로 실행할 코드가 한 줄이면{}
(중괄호)를 생략할 수 있다.
#include <stdio.h>
int main()
{
int num1 = 10;
if (num1 == 10)
printf("10입니다.\n");
else
printf("10이 아닙니다.\n"); // 실행할 코드가 한 줄이라면 중괄호 생략
return 0;
}
if
,else
로 실행할 코드가 두 줄 이상일 때{}
를 생략하면 컴파일 에러가 발생한다.
#include <stdio.h>
int main()
{
int num1 = 10;
if (num1 == 10)
printf("if 조건문\n");
printf("10입니다.\n");
else // if로 실행할 코드가 두 줄 이상일 때 중괄호를 생략하면 컴파일 에러 발생
printf("else\n");
printf("10이 아닙니다.\n");
return 0;
}
// if 조건문
// 10입니다.
if
,else
로 실행할 코드가 두 줄 이상이라면 반드시{}
로 묶어준다.
- 만약 다음과 같이
if
다음에는{}
로 묶어주고else
에서는 생략한다면, 컴파일 에러는 발생하지 않겠지만 의도하지 않은 동작이 되어버린다.
if (num1 == 10)
{
printf("if 조건문\n");
printf("10입니다.\n");
}
else
printf("else\n");
printf("10이 아닙니다.\n"); // 중괄호가 없으므로 if의 결과와는 관계 없이 항상 실행됨
- 여기서는
if
조건식 결과와는 관계없이"10이 아닙니다."
가 항상 출력된다. - 따라서
if
,else
를 사용할 때는{}
사용에 주의한다.
6. if
조건문의 동작 방식 알아보기
- C에서
if
는0
일 때 거짓,0
이 아닐 때 참으로 동작한다.
#include <stdio.h>
int main()
{
if (2) // 0이 아니므로 참
printf("참\n");
else
printf("거짓\n");
return 0;
}
// 참
if
에2
를 넣었는데도"참"
이 출력된다.- 즉,
-2
,-1
,1
,2
처럼0
이 아닌 양수와 음수를 넣으면 무조건 참이다. - 실수도 마찬가지로
0.0f
는 거짓이며0.0f
가 아닌 값들은 참이다.
7. 조건식을 여러 개 지정하기
if
조건문에는 논리 연산자를 사용하여 조건식을 여러 개 지정할 수 있다.
#include <stdio.h>
int main()
{
int num1 = 10;
int num2 = 20;
if (num1 == 10 && num2 == 20) // num1이 10이면서 num2이 20일 때
printf("참\n");
else
printf("거짓\n");
return 0;
}
// 참
num1 == 10 & num2 == 20
처럼num1
이10
이면서num2
이20
일 때 코드를 실행하도록 조건식을 지정할 수 있다.- 여기서
&&
는 논리 연산자이며 "두 식이 모두 만족할 때"를 뜻한다.
if
조건문 안에 다시 if
조건문이 들어갈 수 있나요?
if
조건문은 안에 다시if
조건문을 넣어서 여러 번 판단할 수 있다.
int num1 = 10;
int num2 = 20;
if (num1 == 10)
{
if (num2 == 20) // if 조건문 안에 if 조건문이 들어감
{
printf("참\n");
}
else
{
printf("거짓\n");
}
}
else
{
printf("거짓\n");
}
- 이처럼
if (num1 == 10) { if (num2 == 20) {
는if (num1 == 10 && num2 == 20)
과 판단하는 방식이 같다. - 즉,
if
안에 들어와서 다시if
가 만족해야 하므로 두 조건이 모두 만족해야 하는&&
연산자와 결과가 같다.
- 다음과 같이 안쪽에 있는
if
조건문에서 실행할 코드가 한 줄인 경우 안쪽과 바깥쪽if
조건문 모두{}
를 생략할 수 있다.