본문 바로가기
Language&Framework&Etc/C++

C언어 기반의 C++ 2(02-2) 새로운 자료형 bool

by 머리올리자 2020. 12. 20.

bool형은 C언어에는 존재하지 않고, C++에만 존재하는 자료형.

 

그러나 C의 최근 표준에서는 bool을 기본자료형에 추가

 

bool형에 대해서 공부

 

우선 true와 false를 이해해야 함

 

'참'을 의미하는 true와 '거짓'을 의미하는 false

C와 C++ 모두, 정수 0은 '거짓'을 의미하는 숫자로, 0이 아닌 모든 정수는 '참'을 의미하는 숫자로 정의

 

따라서 참과 거짓의 표현을 위해서 다음과 같이 상수를 정의하는 것이 보통

 

#define TRUE 1
#define FALSE 1

그러나 C++에서는 참과 거짓을 위한 키워드 true와 false를 정의하고 있기 때문에, 굳이 매크로 상수를 이용해서 참과 거짓을 표현할 필요가 없다.

 

예제

#include <iostream>
using namespace std;

int main(void)
{
	int num = 10;
	int i = 0;

	cout << "true: " << true << endl;
	cout << "False: " << false << endl;

	while (true)
	{
		cout << i++ << ' ';
		if (i > num)
			break;
	}
	cout << endl;

	cout << "sizeof 1: " << sizeof(1) << endl;
	cout << "sizeof 0: " << sizeof(0) << endl;
	cout << "sizeof true: " << sizeof(true) << endl;
	cout << "sizeof false: " << sizeof(false) << endl;
	return 0;

}

"true와 false는 각각 1과 0을 의미하는 키워드이다." ----> X 오해하면 안됨

 

true는 1이 아니며, false 역시 0이 아니다.

 

이 둘은 '참'과 '거짓'을 표현하기 위한 1바이트 크기의 데이터

 

다만, true와 false가 정의되기 이전에는 참을 표현하기 위해서 숫자 1을, 거짓을 표현하기 위해서 숫자 0을 사용하기 위해서 숫자 0을 사용했기 때문에, 이 둘을 출력하거나 정수의 형태로 형 변환 하는 경우에 각각 1과 0으로 변환되도록 정의되어 있을 뿐이다.

 

따라서 true와 false를 굳이 ㅇ숫자에 연결시켜서 이해하려 들지 않는게 좋다.

 

True와 False는 그 자체를 '참' 또는 '거짓'을 나타내는 목적으로 정의된 데이터로 인식하는 것이 바람직하다.

 

자료형 bool

true와 false는 그자체로 참과 거짓을 의미하는 데이터이기 때문에,

 

이들 데이터의 저장을 위한 자료형이 별도로 정의되어 있음

 

true와 false를 가리켜 bool형 데이터

 

bool은 int, double과 마찬가지로 기본자료형의 하나이기 때문에 다음과 같이 bool형 변수를 선언하는 것이 가능

bool isTrueOne = true;
bool isTrueTwo = false;
#include <iostream>
using std::cout;
using std::endl;
using std::cin;


bool IsPositive(int num)
{
	if (num <= 0)
		return false;
	else
		return true;
}

int main(void)
{
	bool isPos;
	int num;
	cout << "Input number: ";
	cin >> num;

	isPos = IsPositive(num);
	if (isPos)
		cout << "Positive number" << endl;
	else
		cout << "Negative number" << endl;

	return 0;

}

참고 : [윤성우 열혈 C++ 프로그래밍] - 대부분의 내용 및 코드는 이 책에서 개인 공부 정리 목적으로 참고하였습니다.