7. [C++] 새로운 자료형 bool
2024. 4. 11. 14:09ㆍ[C++]/C++ 언어 기초
🍃 C언어와 C++에서의 bool형
- bool형은 C언어에는 존재하지 않고, C++에서만 존재하는 자료형이었다.
- 그러나 C의 최근 표준에서는 bool을 기본자료형에 추가하였다. 하지만 상당수의 C 컴파일러가 아직 bool을 지원하지 않는다.
🍃 C참을 의미하는 true와 '거짓'을 의미하는 false
- 정수 0은 '거짓'을 의미하는 숫자로, 0이 아닌 모든 정수는 '참'을 의미하는 숫자로 정의하고 있다.
- 따라서 참과 거짓의 표현을 위해 보통 다음과 같이 상수를 정의하는 것이 보통이다.
#define TRUE 1
#define FALSE 0
- 이러한 참과 거짓의 표현방법은 C++에서도 여전히 사용된다.
- 그러나 C++에서는 참과 거짓의 표현을 위한 키워드 true와 false를 정의하고 있기에 굳이 매크로 상수를 이용해 참과 거짓을 표현할 필요가 없다.
TrueAndFalse.cpp
#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<<"size of 1: "<<sizeof(1)<<endl;
cout<<"size of 0: "<<sizeof(0)<<endl;
cout<<"size of true: "<<sizeof(true)<<endl;
cout<<"size of false: "<<sizeof(false)<<endl;
return 0;
}
true: 1
false: 0
0 1 2 3 4 5 6 7 8 9 10
size of 1: 4
size of 0: 4
size of true: 1
size of false: 1
- 위 예제의 실행결과를 통해 잘못된 오해를 하면 안된다.
잘못된 오해 : true와 false는 각각 1과 0을 의미하는 키워드이다.
- true는 1이 아니며, false 역시 0이 아니다. 이 둘은 '참'과 '거짓'을 표현하기 위한 1바이트 크기의 데이터일 뿐이다.
- 다만, true와 false가 정의되기 전 참은 1, 거짓은 0으로 표현했기 때문에 출력하거나 형 변환하는 경우에 각각 1과 0으로 변환하도록 정의되어 있을 뿐이다.
true, false는 각각 1과 0이 아니다! 단지 참과 거짓을 나타내는 데이터일 뿐이다.
🍃 자료형 bool
- true와 false를 가리켜 bool형 데이터라 한다.
- int, double과 마찬가지로 기본자료형의 하나이기 때문에 다음과 같이 변수를 선언하는 것이 가능하다.
bool isTrueOne = true;
bool isTrueTwo = false;
DataTypeBool.cpp
#include <iostream>
using namespace std;
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;
}
Input number: 12
Positive number
bool isPos;
- bool형 변수를 선언해서 함수 IsPositive가 반환하는 bool형 데이터를 저장하고 있다.
- 1,0을 저장할 수 있는 게 아니라, true, false를 저장할 수 있는 데이터이다!
반응형
'[C++] > C++ 언어 기초' 카테고리의 다른 글
9. [C++] 참조자(Reference)와 함수 (0) | 2024.04.11 |
---|---|
8. [C++] 참조자(Reference)의 이해 (0) | 2024.04.11 |
6. const, 메모리 공간, Call-by-value & Call-by-reference (0) | 2024.04.11 |
01-06 은행계좌프로그램 실습 1단계 (0) | 2024.04.11 |
5. [C++] 이름공간(namespace) (0) | 2024.04.11 |