[P4C] C언어 코딩 도장 : UNIT 17 ~ UNIT 19
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도 아닙니다."가 출력된다.