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를 저장할 수 있는 데이터이다!

 

반응형