Programming/C Lang Lecture

[C언어 강좌]12강 : 조건문 사용하기(if문)

yutaejeong 2014. 7. 30. 19:41


Written By Imperfect


[C언어 강좌]12강 : 조건문 사용하기(if문)



목차

1. 조건문이란?

2. if문 사용해보기

3. else문과 함께 사용해보기


1. 조건문이란?

조건문은 말그대로 특정 조건에 만족하는 경우에만 실행할수 있게 해주는 문법(?)입니다.

예를 들어 'i라는 변수가 10이라면, " 안녕!"이라는 말을 출력하라 라는 명령을 실행하려면 어떻게 해야 할까요?

먼저 "i가 10이라면" 이라는 조건을 달고 이 조건이 성립할 떄만 "안녕"이라는 말을 출력하게 해야합니다.

하지만 지금 까지 배운내용으로는 이것이 불가능합니다. 그래서 이번에 이것을 가능하게 하는 조건문을 배워봅시다.


2. if문 사용해보기

if문은 아래와 같이 사용합니다.


if(조건)

{

명령

}


한번 예시를 봐봅시다.

1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
    int i = 10;
    if(i == 10);
    {
        printf("안녕!");
    }
return 0;
}
위의 예시중, 조건 부분에 i = 10이 아닌 i == 10으로 되어있습니다.

이는 조건 부분에서 값을 대입하는 것이아닌 비교하는것이기 때문입니다.

i = 10 이라고 하면 i에 10을 대입하라는 뜻이 되기때문에 i == 10 으로 하여 i 가 10인가? 라는 뜻이 되는것입니다.

'==' 말고도 다른 비교연산자가 있습니다. 아래의 표를 참고해보시기 바랍니다.

참고로 연산자 왼쪽에오는것이 첫번쨰 피연산자(비교대상), 오른쪽에 오는 값이 두번째 피연산자(비교할 값)입니다.

또한 관계식이 참(진실)이면 True를 반환하고(출력?하고) 거짓이면 false를 반환합니다.

관계 및 같음 연산자

<

첫 번째 피연산자가 두 번째 피연산자보다 작음

>

첫 번째 피연산자가 두 번째 피연산자보다 큼

<=

첫 번째 피연산자가 두 번째 피연산자보다 작거나 같음

>=

첫 번째 피연산자가 두 번째 피연산자보다 크거나 같음

==

첫 번째 피연산자가 두 번째 피연산자와 같음

!=

첫 번째 피연산자가 두 번째 피연산자와 같지 않음

논리 연산자

&&

AND, 그리고

연산자 왼쪽에 있는 관계식 오른쪽에 오는 관계식모두 참일떄만 참으로 처리 

||

OR, 또는

연산자 왼쪽에 있는 관계식 또는 오른쪽에 오는 관계식 중 하나라도 참일경우 참으로 처리

위의 예시를 실행하면 아래와 같습니다.

잘 출력이 되었습니다.

조건이 참이기 때문입니다.

그렇다면 조건을 거짓으로 만들어 봅시다.

아래의 소스를 봐봅시다. 아래의 소스에선 i값을 100으로 수정하였습니다.

1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
    int i = 100;
    if(i == 10);
    {
        printf("안녕!");
    }
    return 0; 
}

컴파일하면 어떤결과가 나올까요?

아래는 결과입니다.

위와 출력이 같습니다. 분명 조건에 어긋나는 값을 가졌는데도 if문 내의 명령이 실행되었습니다. 무엇이 문제였을까요?

바로 무심코 입력한 세미콜론(;) 때문입니다. 위의 소스를 잘보시면 if문 조건 괄호 부분 세미콜론으로 마무리를 했습니다.

이렇기 떄문에 컴파일러는 if문의 조건과 i의 값을 비교하고 거기서 끝난후 이후의 명령을 처리한것입니다.

위의 소스를 고쳐서 컴파일해봅시다.

정상적으로 출력되었습니다.

이젠 다르게 써봅시다.

한번 중괄호를 생략하면 if문 다음 어디까지 명령이 실행될까요?

아래의 소스를 봐봅시다.

1
2
3
4
5
6
7
8
9
#include<stdio.h>
int main()
{
    int i = 100;
    if(i == 10)
    printf("안녕!");
    printf("안녕!!");
    return 0; 
}

위의 소스에선 if문 다음에 명령을 두개를 입력했습니다.

i의 값이 조건과 일치하지 않기떄문에 첫번째 명령이 출력되면 안됩니다.

아래는 결과입니다.

예상대로 출력되었습니다.

위의 결과를 토대로 if문 사용법을 다시설명드리겠습니다.


if(조건)

{

명령1

명령2

}


또는


if(조건)

명령1


입니다. 위에는 두개이상의 명령이 가능하고 아래는 한개만의 명령이 가능합니다.


3. else문과 함께 사용해보기

그런데 만약, 조건에 먼저 조건과 비교하고, 조건에 만족하지 않는경우 따로 명령을 내리고 싶다면 어떻게해야 할까요?

바로 else문을 사용하면 됩니다. else문의 예시를 봐봅시다.

1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
    int i = 100;
    if(i == 10)
    printf("안녕!");
    else
    printf("잘가!");
    return 0; 
}

위의 소스를 실행하면 어떻게 출력이 될까요?

i값이 조건에 만족하지 않습니다. 그래서 첫번째명령은 출력되지않을것이고 아마 두번째 명령이 출력 될것입니다. 아래는 결과입니다.

예상되로 출력이 잘 되었습니다. 하지만 여기서 의문이 드는분이 계실겁니다.

else문이 없어도 위와같이 출력이 되기때문입니다.

하지만 else문이 없다면, i값이 10일때 "안녕!"만 출력되고 "잘가!"는 출력되지 않습니다.

조건에 만족하면 "안녕!"을, 만족하지않는다면 "잘가!"를 출력하는 것 입니다.

이것이 바로 else문의 기능입니다.

하지만 조건에 만족하지 않을때 또다른조건을 걸고 싶을 때 어떻게해야 할까요?

예를 들어 i값이 100보다 크면 "i의 값이100보다 큽니다."라고 출력하고

i의 값이 100보다 작으면 "i의 값이 100보다 작습니다."라고 출력하고

i의 값이 100과 같으면 "i의 값이 100과 같습니다."라고 출력하고자 하는경우 처럼입니다.

이런경우엔 아래와 같이 사용하면됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>
int main()
{
    int i = 100;
    if(i > 100)
        printf("i의 값이 100보다 큽니다.");
    else if(i < 100)
        printf("i의 값이 100보다 작습니다.");
    else if (i == 100)
        printf("i의 값이 100과 같습니다.");
    return 0; 
}
위의 출력은 어떨까요?

i의 값을 100으로 지정했으니 결과가 잘 나왔습니다.

else if문은 '위의 조건이 아닐경우, 아래의 조건과 비교해라' 정도 뜻이 있습니다.

그리고 else if문은 다른 문법(?)이 아닌 else문을 활용한것입니다.

이제 이번 강좌를 마치겠습니다. 



다음강좌

13강 : switch문


[C언어 강좌]12강 : 조건문 사용하기(if문)