12. if 조건문
1. 키워드
if
조건문- 의사 코드(Pseudo Code)
2. if
조건문으로 특정 조건일 때 코드 실행하기
- 조건문은 특정 조건일 때 코드를 실행하는 문법이다.
의사 코드
- 의사 코드는 실제 프로그래밍 언어가 아닌 사람의 언어로 프로그래밍 언어를 표현한 것이다.
- 보통 특정 프로그래밍 언어를 사용하지 않고 알고리즘이나 컴퓨터 명령을 기술할 때 사용한다.
3. if
조건문 사용하기
if
조건문은 괄호 안에 조건식을 지정하여 사용한다.
- 다음 내용을 입력한 뒤 실행해 보자.
#include <stdio.h>
int main()
{
int num1 = 10;
if (num1 == 10) // num1이 10이면
{
printf("10입니다.\n"); // "10입니다."를 출력
}
return 0;
}
- C에서 조건문은
if()
형식으로 사용하며()
(괄호) 안에는 조건식이 들어간다. - 그리고
{}
(중괄호) 안에는 조건식이 만족할 때 실행할 코드를 넣는다.
- 여기서는 변수
num1
에10
을 할당한 뒤if
조건문으로num1
이10
과 같은지 검사했다. ()
안의 조건식은num1 == 10
과 같은 형식으로 지정해 주는데==
는 두 값이 "같을 때"라는 뜻이며 수학의=
(등호)와 같다.- 즉,
if (num1 == 10)
은num1
이10
과 같은지 비교한 뒤 같으면 다음에 오는 코드를 실행하라는 뜻이 된다.
4. if
조건문과 세미콜론
if
조건문을 사용할 때는;
(세미콜론)을 항상 주의해야 한다.
- 다음 내용을 입력한 뒤 실행해 보자.
#include <stdio.h>
int main()
{
int num1 = 5;
if (num1 == 10); // if 조건문 끝에는 세미콜론을 붙이면 안 됨
{
printf("10입니다.\n");
}
return 0;
}
if
조건문 끝에;
이 붙어있다.- 이렇게 되면
if
는 제대로 동작하지 않고, 뒤에 오는 코드가 무조건 실행되어 버린다. - 그래서
num1
에는5
가 들어있기 때문에"10입니다."
가 출력되면 안되지만 출력이 되고 있다.
if
조건문 끝에;
을 붙이면 실제로는 다음과 같은 코드가 된다.
if
와printf
는 전혀 관계가 없이 떨어진 상태가 되므로 조건식이 어떻든printf
는 항상 실행된다.- 이런 상황에서 컴파일 에러가 발생하지 않는 이유는, C에서는 다음과 같이 코드를
{}
로 감쌀 수 있기 때문이다.
printf
를{}
로 감싸도 동작은 달라지지 않지만 변수를 선언하고 사용할 때는 약간의 차이가 있다.
5. if
조건문에서 중괄호 생략하기
if
조건문에서 실행할 코드가 한 줄이라면 다음과 같이{}
(중괄호)를 생략할 수 있다.
#include <stdio.h>
int main()
{
int num1 = 10;
if (num1 == 10)
printf("10입니다.\n"); // 실행할 코드가 한 줄이라면 중괄호 생략
return 0;
}
- 마찬가지로
if
조건문 끝에는 절대;
을 붙이면 안 된다.
if
에;
를 붙이면if
와printf
는 관계가 없이 떨어진 상태가 된다.- 즉,
{}
없이 한 줄로 코드를 만들면 관계가 없는 상태가 좀 더 명확하게 보일 것이다.
if
에서 실행할 코드가 두 줄 이상일 때는{}
생략에 주의해야 한다.
#include <stdio.h>
int main()
{
int num1 = 5;
if (num1 == 10)
printf("if 조건문\n"); // if에서 중괄호를 생략하면 첫 번째 줄만 실행됨
printf("10입니다.\n"); // 중괄호가 없으므로 if의 결과와는 관계없이 항상 실행됨
return 0;
}
if
로 실행할printf
가 두 개인데도{}
를 생략하면 첫 번째printf
만 실행된다.- 여기서는
num1
에5
가 들어있으므로 조건식이 거짓이라"if 조건문"
은 출력되지 않지만, 뒤에 오는printf
는if
와 관계없이 항상 실행되므로"10입니다."
가 출력된다.
if
로 실행할 코드가 두 줄 이상이라면 반드시{}
로 묶어준다.
#include <stdio.h>
int main()
{
int num1 = 5;
if (num1 == 10)
{ // if로 실행할 코드가 두 줄 이상이라면 중괄호로 묶어줌
printf("if 조건문\n");
printf("10입니다.\n");
}
return 0;
}
6. if
조건문에서 실수와 문자 비교하기
if
조건문에서 정수가 아닌 실수나 문자도 비교할 수 있다.
#include <stdio.h>
int main()
{
float num1 = 0.1f;
char c1 = 'a';
if (num1 == 0.1f) // 실수 비교
printf("0.1입니다.\n");
if (c1 == 'a') // 문자비교
printf("a입니다.\n");
if (c1 == 97) // 문자를 ASCII 코드로 비교
printf("a입니다.\n");
return 0;
}
// 0.1입니다.
// a입니다.
// a입니다.
- 비교할 변수와 값, 변수와 변수는 자료형을 맞춰주어야 한다.
- 단, 실수는 연산한 뒤 반올림 오차가 발생할 수 있으므로 반올림 오차를 감안하여 비교한다.
- 그리고 문자 자료형은
c1 == 'a'
처럼 문자로 비교하거나,c1 == 97
처럼 ASCII 코드로 비교해도 된다.
7. 사용자가 입력한 값에 if
조건문 사용하기
- 이번에는
scanf
함수를 사용하여 사용자가 입력한 값을 변수에 저장하고,if
조건문으로 값을 비교해 보자.
#define _CRT_SECURE_NO_WARNINGS // scanf 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
int main()
{
int num1;
scanf("%d", &num1); // 입력받은 값을 변수에 저장
if (num1 == 10) // num1이 10이면
{
printf("10입니다.\n"); // "10입니다."를 출력
}
if (num1 == 20) // num1이 20이면
{
printf("20입니다.\n"); // "20입니다."를 출력
}
return 0;
}
// 10 (입력)
// 10입니다.
- 입력 값이
num1
에 저장되고,if
로num1
이10
인지 비교했다. - 여기서는
10
을 입력했으므로"10입니다."
가 출력된다.