17. 불 자료형
1. 키워드
2. 불 자료형 사용하기
- 불 자료형은 논리형 자료형이라고도 하며 참과 거짓을 나타낸다.
- C는
0
을 거짓으로, 0
이 아닌 숫자를 참으로 사용하지만 stdbool.h
헤더 파일을 사용하면 true
를 참으로, false
를 거짓으로 나타낼 수 있다.
3. stdbool.h
헤더 파일 사용하기
stdbool.h
헤더 파일로 불 자료형을 사용해 보자.
#include <stdio.h>
#include <stdbool.h> // bool, true, false가 정의된 헤더 파일
int main()
{
bool b1 = true;
if (b1 == true) // b1이 true인지 검사
printf("참\n"); // b1이 true이므로 참이 출력됨
else
printf("거짓\n");
return 0;
}
- 먼저
#include
로 stdbool.h
헤더 파일을 포함한 뒤 자료형 bool
과 값 true
, false
를 사용하면 된다.
- 여기서는 변수
b1
에 true
를 할당했고, if
조건문으로 b1
이 true
인지 비교했다.
- 물론 같은
true
이므로 "참"
이 출력된다.
4. 불 자료형 크기 알아보기
- 이번에는
int
자료형과 bool
자료형의 크기를 알아보자.
#include <stdio.h>
#include <stdbool.h> // bool, true, false가 정의된 헤더 파일
int main()
{
printf("int의 크기: %d\n", sizeof(int)); // int의 크기는 4바이트
printf("bool의 크기: %d\n", sizeof(bool)); // bool의 크기는 1바이트
return 0;
}
// int의 크기: 4
// bool의 크기: 1
sizeof
연산자로 int
와 bool
자료형의 크기를 구했다.
- 출력 결과에 따르면
int
의 크기는 4
바이트, bool
의 크기는 1
바이트이다.
- 지금까지
int
로 참, 거짓을 표현했는데 int
와 bool
은 크기가 다르다는 점을 기억하자.
5. 불 자료형과 논리 연산자 사용하기
- 불 자료형과 논리 연산자를 함께 사용해 보자.
#include <stdio.h>
#include <stdbool.h> // bool, true, false가 정의된 헤더 파일
int main()
{
printf("%d\n", true && true); // true AND true는 1
printf("%d\n", true && false); // true AND false는 0
printf("%d\n", false && true); // false AND true는 0
printf("%d\n", false && false); // false AND false는 0
printf("%d\n", true || true); // true OR true는 1
printf("%d\n", true || false); // true OR false는 1
printf("%d\n", false || true); // false OR true는 1
printf("%d\n", false || false); // false OR false는 0
return 0;
}
// 1
// 0
// 0
// 0
// 1
// 1
// 1
// 0
true
, false
와 논리 연산자를 함께 사용하니 코드가 좀 더 명확하게 보인다.
- 하지만
printf
로 결과를 출력할 때는 정수를 출력하는 것처럼 서식 지정자 %d
를 사용한다.
stdbool.h
에는 자료형과 불값만 정의할 뿐 전용 서식 지정자는 없다.
6. true
, false
를 문자열로 출력하기
true
, false
를 printf
로 출력하고 싶다면 다음과 같이 삼항 연산자와 문자열을 활용하면 된다.
#include <stdio.h>
#include <stdbool.h> // bool, true, false가 정의된 헤더 파일
int main()
{
bool b1 = true;
bool b2 = false;
printf(b1 ? "true" : "false"); // b1이 true이므로 true가 출력됨
printf("\n");
printf(b2 ? "true" : "false"); // b2가 false이므로 false 출력됨
printf("\n");
printf("%s\n", b1 ? "true" : "false"); // b1이 true이므로 true가 출력됨
printf("%s\n", b2 ? "true" : "false"); // b2가 false이므로 false 출력됨
return 0;
}
// true
// false
// true
// false
printf
안에서 삼항 연산자를 활용하여 변수가 true
이면 "true"
문자열을 출력하고, false
이면 "false"
문자열을 출력한다.
- 서식 지정자 없이 그대로 출력해도 되고,
%s
서식 지정자를 사용해도 된다.
- 삼항 연산자는 조건식뿐만 아니라 참, 거짓 값으로도 판단할 수 있으므로 불값이 들어있는 변수를 그대로 사용하면 된다.
7. if
조건문에서 불 자료형 사용하기
- 불 자료형은
if
조건문에서 그대로 사용할 수 있다.
#include <stdio.h>
#include <stdbool.h> // bool, true, false가 정의된 헤더 파일
int main()
{
if (true) // 불 true 사용
printf("참\n"); // 참이므로 참이 출력됨
else
printf("거짓\n");
if (false) // 불 false 사용
printf("참\n");
else
printf("거짓\n"); // 거짓이므로 거짓이 출력됨
return 0;
}
// 참
// 거짓
if
조건문에 true
, false
를 사용하니 좀 더 읽기가 편해졌다.
- 여기서는 값이 고정되어 있기 때문에 결과는 항상 똑같다.
References