코딩 기록

C언어 if문 기초, 관계연산자, 논리연산자, else if 사용법

프로그램에서 조건 분기 처리는 필수입니다.


C언어에서 조건 분기 제어문에는 여러 종류가 있지만, 이 포스트에서는 조건 분기 처리의 기본이 되는 C언어 if문 사용법을 소개합니다.


1. if문

1-1. if

if문은 조건 분기 처리를 수행하는 명령어입니다.


구체적으로 "조건 A가 성립하는 경우 A를 수행한다"라는 것을 처리하려는 방법입니다.


다음은 C언어 if문을 작성하는 방법입니다.


if (조건식)

{

    (조건식이 성립하는 경우의 처리를 기술)

}

1-2. 조건식은 bool로 판정

if문에서 조건식은 bool로 판정합니다.


또한, 논리값은 다음과 같이 판정합니다.


  • true : ≠ 0 (0이 아닌)
  • false : 0 (0이다)


※ if문 뿐만 아니라 C언어 조건문 전반이 논리값으로 판정됩니다.


다음 예제를 살펴봅시다.


[예제 1-1]


1
2
3
4
5
6
7
8
9
10
11
12
int a = 0;
int b = 1;
 
if (a)
{
    printf("변수 a는 true입니다.\n"); // 처리
}
 
if (b)
{
    printf("변수 b는 true입니다.\n"); // 처리
}
cs



위 예제를 실행하면 "변수 b는 true입니다."만 출력됩니다.


다음, 부정(~ 아니다)을 의미하는 조건 표현식 작성 방법을 알아보겠습니다.


조건 앞에 "!"를 붙이면 부정을 의미합니다.


[예제 1-2]


1
2
3
4
5
6
7
8
9
10
11
12
int a = 0;
int b = 1;
 
if (!a)
{
    printf("변수 a는 false입니다.\n"); // 처리
}
 
if (!b)
{
    printf("변수 b는 false입니다.\n"); // 처리
}
cs


위 예제를 실행하면 "변수 a는 false입니다."만 출력됩니다.


1-3. 관계 연산자를 사용한 조건문

관계 연산자를 사용하면 조건문 작성이 쉬워집니다.


관계 연산자의 종류는 아래 표와 같습니다.


참조

번호

연산자

의미

1

==

같음

 if (a == 0) // a가 0이다

2

!=

같지 않음

 if (a! = 0) // a는 0이 아니다

3

>

 if (a> 0) // a가 0보다 크다

4

<

작은

 if (a <0) // a가 0보다 작다

5

>=

이상

 if (a >= 0) // a가 0 이상이다

6

<=

이하

 if (a <= 0) // a가 0 이하이다




위 연산자를 사용한 조건문 예제는 다음과 같습니다,

[예제 1-3]


1
2
3
4
if (num % 2 == 0)
{
    printf("변수 num은 짝수입니다\n"); // 
}
cs



위 예제는 변수 num을 2로 나눕니다.


나머지가 0인 경우 변수 num이 짝수라고 출력합니다. 위 예제는 짝수인 경우에만 출력되지만, 홀수인 경우에도 출력하고 싶다면 else문을 사용합니다.


else 문을 사용하는 조건문 예제는 다음과 같습니다.


[예제 1-4]


1
2
3
4
5
6
7
8
if (num % 2 == 0)
{
    printf("변수 num은 짝수입니다\n"); // 처리
}
else
{
    printf("변수 num은 홀수입니다\n"); // 처리
}
cs


이러면 홀수인 경우에도 출력됩니다.


또한, C언어 if문은 bool로 나타낼 수 있으므로 위의 예제는 다음과 같이 응용할 수도 있습니다.


[예제 1-5]


1
2
3
4
5
6
7
8
if (!num % 2)
{
    printf("변수 num은 짝수입니다\n"); // 처리
}
else
{
    printf("변수 num은 홀수입니다\n"); // 처리
}
cs



왜 똑같냐면, num % 2의 결과가 0(거짓)이기 때문입니다.


다음과 같이 작성해도 결과는 같습니다.


[예제 1-6]


1
2
3
4
5
6
7
8
if (num % 2)
{
    printf("변수 num은 홀수입니다\n"); // 처리
}
else
{
    printf("변수 num은 수입니다\n"); // 처리
}
cs



이번엔 num % 2의 결과가 1(True)이므로, 출력할 문자열을 변경함으로써 같은 작업이 이뤄집니다.

2. 여러 분기의 if문

조건 분기를 하는 경우 분기가 꼭 두 가지는 아닙니다.

이번에는 3개 이상으로 분기하는 조건문 작성 방법을 설명합니다.



2-1. else if 문

3개 분기문을 작성하고 싶을 때 else if 문을 사용합니다.


작성 방법은 다음과 같습니다.


[예제 2-1]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
int result = num % 3;
 
if (result == 0)
{
    printf("변수 num 나누기 3의 나머지는 0입니다.\n");
}
else if(result == 1)
{
    printf("변수 num 나누기 3의 나머지는 1입니다.\n");
}
else
{
    printf("변수 num 나누기 3의 나머지는 2입니다.\n");
}
cs



위 예제는 변수 num을 3으로 나눈 나머지에 따라 분기됩니다. 결과는 0~2까지 3종류입니다.


조건 분기의 순서는 작성된 순서를 따릅니다. 따라서 순서는 다음과 같습니다.


  1. if
  2. else if
  3. else


C언어 if문은 처음 한 번밖에 사용할 수 없습니다. 또한, else 문은 if, else if 조건 이후 반드시 한 번만 작성됩니다.


그럼 4개 이상으로 분기하는 경우는 어떡할까요? else if를 여러 번 작성하면 됩니다.

예제는 다음과 같습니다.


[예제 2-2]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int result = num % 5;
 
if(result == 0)
{
    printf("변수 num 나누기 5의 나머지는 0입니다\n");
}
else if(result == 1)
{
    printf("변수 num 나누기 5의 나머지는 1입니다\n");
}
else if(result == 2)
{
     printf("변수 num 나누기 5의 나머지는 2입니다\n");
}
else
{
    printf("변수 num 나누기 5의 나머지는 3 또는 4입니다.\n");
}
cs



위 예제는 5로 나눈 나머지에 따라 분기됩니다.


5로 나눴을 때, 나머지는 0~4까지 5가지 패턴이며, else 분기가 작동하는 조건은 나머지가 3 또는 4인 경우입니다.

2-2. 여러 조건의 if 문

여러 조건으로 분기하고 싶다면 조건식에 논리 연산자를 추가합니다.


논리 연산자의 종류는 아래와 같습니다.


연산자

의미

1

&&

그리고

if (a> = 0) && (a> = 3) // a가 0 이상 3 이하면

2

||

또는

if (a == 0) || (a == 10) // a가 0 또는 10이면




위의 논리 연산자를 활용한 C언어 if문 사용하는 방법을 소개합니다.


아래는 AND &&를 이용한 예제입니다.


[예제 2-3]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
unsigned int age; // 나이를 나타내는 변수
 
//----------중략-----------
 
if (age < 8// 8세 미만
{
    printf("미취학 아동 또는 초등학생 1학년\n");
}
else if((age >= 8&& (age <= 13)) // 8세 이상 13세 이하
{
    printf("초등학생\n");
}
else if(age == 13// 13세
{
    printf("초등학교 6학년, 곧 중학생 1학년\n");
}
else if((age >= 14&& (age <= 16)) // 14세 이상 16세 이하
{
    printf("중학생\n");
}
else // 그 외
{
    printf("중학생 3학년 이상\n");
}
cs



위 예제에서는 나이를 나타내는 변수 age를 바탕으로 분기합니다.


다음은 OR 조건을 사용한 예제입니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
unsigned int num;  // 숫자 변수
 
//----------중략-----------
 
if ((num % 2 == 0|| (num % 3 == 0))
{
 
    printf("변수 num은 2 또는 3의 배수입니다.\n");
}
else
{
    printf("변수 num은 2, 3의 배수가 아닙니다.\n");
}
cs



위 예제에서 주목할 점은 OR 조건의 Else 절이 AND 조건이라는 것입니다.



3. 마지막 정리


C언어 if문의 기본적인 사용법을 정리했습니다. C언어를 비롯한 각종 언어에서는 if문을 반드시 사용합니다.


또한, 조건식은 if문 이외의 명령문에서도 사용합니다. 그래서 C언어를 공부하는 분들이라면 C언어 if문을 꼭 기억하고 잘 사용하셔야 합니다.


또한, 이 포스트에서 예제로 사용한 코드는 어디까지나 사용법을 보여주기 위한 것이므로 실무에서의 사용 방법과 맞지 않을 수도 있습니다.


C언어 더 보기

포인터 기초, 배열 구조체 포인터 함수

https://codingcoding.tistory.com/1108


힙, 선택, 삽입, 버블, 쉘, 합병, 퀵 정렬

https://codingcoding.tistory.com/268


포인터 기초 - 변수 주소와 포인터의 포인터

https://codingcoding.tistory.com/1107


C언어 순차탐색, 이진탐색

https://codingcoding.tistory.com/831


댓글(0)