
Unit 17. if 조건문으로 특정 조건일 때 코드 실행하기
17.0 if 조건문 사용하기
조건문은 특정 조건일 때 코드를 실행하는 문법이다.
if 조건문은 괄호 안에 조건식을 지정하여 사용한다.
if (조건식)
{
코드
}
C 언어에서 조건문은 if ( ) 형식으로 사용하며 ( ) (괄호)안에는 조건식이 들어간다. 그리고 { } (중괄호) 안에는 조건식이 만족할 때 실행할 코드를 넣는다.
17.2 if 조건문과 세미콜론
#include <stdio.h>
int main()
{
int num1 = 5;
if (num1 == 10); // if 조건문 끝에는 세미콜론을 붙이면 안 됨
{
printf("10입니다.\n");
}
return 0;
}
* 주의 : if 조건문 끝에는 세미콜론을 붙이면 안 됨
if 조건문 뒤에 세미콜론이 붙으면 if와 printf는 전혀 관계가 없이 떨어진 상태가 되어 조건식이 어떻든 printf는 항상 실행된다.
17.3 if 조건문에서 중괄호 생략하기
#include <stdio.h>
int main()
{
int num1 = 10;
if (num1 == 10)
printf("10입니다.\n"); // 실행할 코드가 한 줄이라면 중괄호 생략
return 0;
}
if 조건문에서 실행할 코드가 한 줄이라면 다음과 같이 중괄호를 생략할 수 있다.
단, if로 실행할 코드가 두 줄 이상이라면 반드시 중괄호로 묶어줘야한다.
17.4 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;
}
if 조건문에서는 정수가 아닌 실수나 문자도 비교할 수 있다.
단, 위와 같이 비교할 변수와 값, 변수와 변수는 자료형을 맞춰줘야 한다.
17.5 사용자가 입력한 값에 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;
}
다음은 scanf 함수를 사용하여 사용자가 입력한 값을 변수에 저장하고, if 조건문으로 값을 비교해본 것이다.
※ 파이썬과의 차이점 : 파이썬과 C언어는 if 조건문에서 문법적인 차이점이 존재한다. 우선 파이썬의 경우 C와 달리 if 조건문의 조건식이 ()괄호 안에 들어가지 않는다. 또한 조건식 뒤에 무조건 :콜론을 붙어야하며, 조건식이 만족할 때 실행될 코드도 중괄호로 묶이지 않는다.
Unit 18. else를 사용하여 두 방향으로 분기하기
18.1 else 사용하기
if에 else를 사용하면 조건식이 만족할 때와 만족하지 않을 때 각각 다른 코드를 실행할 수 있다.
if (조건식)
{
코드1
}
else
{
코드2
}
조건식이 참이면 if의 코드가 실행되고, 거짓이면 else의 코드가 실행된다.
else는 if 조건문 뒤에 오며 단독으로 사용할 수 없다.
18.2 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에 세미콜론을 붙여 버리면 그 뒤에 오는 코드와는 관계가 없어져 버린다. 따라서 조건식의 결과와는 관계 없이 항상 실행된다.
-> if와 마찬가지로 else도 세미콜론을 붙이지 않도록 주의해야 한다.
18.3 else에서 중괄호 생략하기
#include <stdio.h>
int main()
{
int num1 = 10;
if (num1 == 10)
printf("10입니다.\n");
else
printf("10이 아닙니다.\n"); // 실행할 코드가 한 줄이라면 중괄호 생략
return 0;
}
else도 if와 마찬가지로 실행할 코드가 한 줄이면 중괄호를 생략할 수 있다.
단 if, else로 실행할 코드가 두 줄 이상이라면 반드시 중괄호로 묶어줘야한다.
18.4 if 조건문의 동작 방식 알아보기
#include <stdio.h>
int main()
{
if (2) // 0이 아니므로 참
printf("참\n");
else
printf("거짓\n");
return 0;
}
C 언어는 0을 거짓으로, 그 이외의 값을 모두 참으로 사용한다.
따라서 if에 2를 넣었는데도 "참"이 출력되는 것이다. 즉, -4, -3, -2, -1, 1, 2, 3, 4...처럼 0이 아닌 양수와 음수를 넣으면 무조건 참이다. 실수도 마찬가지로 0.0f는 거짓이며 0.0f가 아닌 값들은 참이다.
18.5 조건식을 여러 개 지정하기
#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;
}
1. if 조건문에는 논리 연산자를 사용하여 조건식을 여러 개 지정할 수 있다.
int num1 = 10;
int num2 = 20;
if (num1 == 10)
{
if (num2 == 20) // if 조건문 안에 if 조건문이 들어감
{
printf("참\n");
}
else
{
printf("거짓\n");
}
}
else
{
printf("거짓\n");
}
2. if 조건문는 안에 다시 if 조건문을 넣어서 여러 번 판단할 수 있다. (중첩 if문)
이때, 안쪽에 있는 if 조건문에서 실행할 코드가 한 줄인 경우 안쪽과 바깥쪽 if 조건문 모두 중괄호를 생략할 수 있다.
Unit 19. else if를 사용하여 여러 방향으로 분기하기
19.1 else if 사용하기
if (조건식)
{
코드1
}
else if (조건식)
{
코드2
}
else if는 조건식을 여러 개 지정하여 각 조건마다 다른 코드를 실행할 수 있다.
else if는 else인 상태에서 조건식을 지정할 때 사용한다. 단, else if는 단독으로 사용할 수 없다.
+ 만약 else if에 조건식을 지정하지 않으면 컴파일 에러가 발생하므로 주의해야 함.
19.2 if, else if, else를 모두 사용하기
#include <stdio.h>
int main()
{
int num1 = 30;
if (num1 == 10) // num1이 10일 때
printf("10입니다.\n");
else if (num1 == 20) // num1이 20일 때
printf("20입니다.\n");
else // 앞의 조건식에 모두 만족하지 않을 때
printf("10도 20도 아닙니다.\n");
return 0;
}
이렇게 하면 if, else if의 조건식이 모두 거짓일 때만 else의 코드가 실행된다. 여기서는 num1이 30이라 if, else if의 조건식에 모두 만족하지 않는다. 따라서 마지막 else의 "10도 20도 아닙니다."가 출력된다.
'Programming Languages > C' 카테고리의 다른 글
[P4C] C언어 코딩 도장 : UNIT 23 ~ UNIT 25 (0) | 2021.02.19 |
---|---|
[P4C] C언어 코딩 도장 : UNIT 20 ~ UNIT 22 (0) | 2021.02.19 |
[P4C] C 언어 코딩 도장 : 문제 풀이2 (0) | 2021.02.18 |
[P4C] C언어 코딩 도장 : UNIT 12 ~ UNIT 16 (0) | 2021.02.17 |
[P4C] C언어 코딩 도장 : UNIT 9 ~ UNIT 11 (0) | 2021.02.17 |