조건문이란 프로그램이 특정 조건에 따라 다른 동작을 하게 만드는 기능이다.
예를 들어 '만약 점수가 90점 이상이면', A학점을 출력한다. '만약 비가 오면', 우산을 챙긴다 등이 있다.
C언어에서 가장 많이 사용하는 조건문은 if문, if~else문, else if문, switch문이 있다.
먼저 if문은 가장 기본적인 조건문으로
if (조건식)
{
실행문;
}
의 구조로 이루어져 있다.
조건문 안에 있는 조건식은 결과가 항상 참/거짓 중 하나로 나온다.
주로 조건식은 비교 연산자(==, !=, >, <, >=, <= 등)과 같이 사용된다.
예시를 보자


조건식이 참일 경우 조건식 안의 내용이 실행되는 방식이다.
age는 20이 대입 되어있으므로, age가 19이상인 조건은 참이되어 출력이 된다.
만약 조건이 거짓일 경우 중괄호 안의 코드는 무시된다.
다음 if ~ else문을 살펴보자
if ~ else문은 조건이 참일 때와 거짓일 때를 나눠서 실행할 수 있다.
if (조건식)
{
실행문;
}
else
{
실행문2;
}
의 구조로 되어있다.
if문의 조건식이 거짓일 경우 무시되는 단일 if문과는 다르게 이것은 if의 조건식이 거짓일 경우 else문이 실행된다.
예시를 보자.


만약 num을 2로 나누었을 때 나머지가 0이면 "짝수입니다"를 출력, 그렇지 않으면 "홀수입니다"를 출력한다
이 코드에서 num은 3이 대입되어 있으므로 2로 나눈 나머지가 1이다. 즉 나머지가 0이 아닌 모든 경우이므로 '홀수입니다'가 출력된다.
다음은 else if 문을 살펴보자.
else if는 조건이 여러 개일 경우 사용하는 조건문이다.
else if는 여러 개를 사용할 수 있다.
if (조건1)
{
실행문1;
}
else if (조건2)
{
실행문2;
}
else
{
실행문3;
}
위에서부터 여러 조건들을 맞춰보고 맞는 조건의 줄이 실행된다. (어느 한 조건식에서 참이 나오면 그 아래는 검사하지 않는다)
예시를 보자.

만약 score가 90점 이상이라면 A학점을 출력, 80점 이상이라면 B학점을 출력, 70점 이상이라면 C학점을 출력하고
그 외라면 '재시험'을 출력한다.
score에 있는 점수는 85점이므로 코드를 실행하면 B학점이 출력된다.
if를 여러개 쓰지 않고 굳이 else if를 사용하는 이유는 else if는 조건문을 하나씩 검사하여 조건이 참일 경우 나머지 조건문은 무시하고 해당 줄만 실행하지만, if를 여러 개 쓰면 조건이 중복될 경우 해당되는 모든 조건문을 실행하기 때문이다.


예시로 if문으로만 작성하면 85점의 경우 70점 이상도 되고, 80점 이상도 되기 때문에 B학점 C학점이 모두 출력된다
다음은 switch문을 살펴보자.
switch문은 if문과 마찬가지로 조건을 체크하고 실행하나, if문처럼 관계식을 사용하지 못하고 특정한 정수값이나 문자만 확인할 수 있다 (실수값의 경우 오류가 발생한다)
if문처럼 하나씩 조건을 체크하며 내려가는 것이 아닌 입력된 케이스로 바로 이동하는 방식이다 (와! if문보다 빠르다!)
switch(변수)
{
case 값1:
실행문;
break;
case 값:
실행문;
break;
default:
실행문;
}
의 기본구조를 가지고 있다.
switch의 변수 자리에 들어가는 값에 따라 값1, 값2에 해당하는 실행문을 실행한다
해당되는 값이 없다면 default에 있는 실행문이 실행된다 [if문의 else와 같은 역할을 한다]
case는 여러 개를 사용할 수 있다.
예시를 보자


정수형 변수 menu를 선언하고 switch의 변수 자리에 menu를 넣어 menu의 값에 따라 case1, case2, case3가 실행되게 하였다.
지금은 menu에 2가 대입되어 있으므로 case 2에 해당하는 "짬뽕"이 출력된다.


switch문을 사용할 때 각 케이스마다 break가 적혀있는데, break가 없으면 break가 없는 아래 케이스들 까지 전부 실행된다
[if문에서 else if를 사용하지 않고 if문으로만 작성했을때 조건이 중복되는 줄 모두 실행하는 것과 같은 경우이다]
따라서 if문처럼 해당 케이스만 실행하게 하고 싶은 경우에는 break를 꼭 써주어야 한다
(하지만 인위적으로 여러 조건을 검사하고 싶은 경우에는 break문을 안써도 된다)
VR게임 개발을 위한 언리얼엔진/C++ 공부한 내용 끄적이기...
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!