잔잔이네
article thumbnail

불리언 ( Boolean )

#include <iostream>

int main()
{
    using namespace std;

    bool b1 = true;
    bool b2(false);
    bool b3{ true };
    b3 = false;

    cout << std::boolalpha;
    cout << b3 << endl;
    cout << b1 << endl;

    return 0;
}

boolean타입도 다른 타입처럼 초기화가 가능하다.

std::boolalpha; 를 이용해 참과 거짓을 1, 0으로 출력하지 않고 true, false로 출력할 수 있음.

std::noboolalpha; : 다시 0, 1로 출력해줌.


if문

#include <iostream>

bool isEqual(int a, int b)
{
    bool result = (a == b);

    return result;
}

int main()
{
    using namespace std;

    cout << std::boolalpha;
    cout << isEqual(1, 1) << endl;
    cout << isEqual(0, 3) << endl;

    return 0;
}

Bool 타입을 return값으로 사용할 때도 있다.

(위의 예로 수를 비교하고 함수 결과로 참, 거짓을 표현한다.)

또, If () 문 괄호 안에 0이면 false이고 그 외는 다 true라서 결과가 true로 나온다.

 

	bool b;

    cin >> b;
    cout << std::boolalpha;
    cout << "Your input : " << b << endl;

    return 0;
}

Bool type 변수 b를 입력받아서  0일때만 false가 나오고 나머지는 true가 출력된다.


캐스팅 ( Casting )

#include <iostream>

int main()
{
    using namespace std;

    char c1(65);  //명시적 캐스트
    char c2('A'); // 1byte, 명시적 캐스트

    cout << c1 << " " << c2 << " " << int(c1) << " " << int(c2) << endl;

    // C
    cout << (char)65 << endl;
    cout << (int)'A' << endl;

    // C++
    cout << char(65) << endl;
    cout << int('A') << endl;

		cout << static_cast<char>(65) << endl;
    cout << static_cast<int>('A') << endl;

    return 0;
}

캐스팅방식은 크게 묵시적 캐스트(implicit cast)와 명시적 캐스트(explicit cast) 두 가지로 나눌 수 있다.

캐스트 연산자를 사용하지 않고 형변환이 이루어지는 경우가 묵시적 캐스트이다 ( char c1 = 65; )

static_cast는 컴파일러가 문제없는지 확인하고 변환을 한다.

( 그 위의 캐스트는 강제성 변환인 느낌이 강하다 )


버퍼

char c1(65);

    cin >> c1;
    cout << c1 << " " << static_cast<int>(c1) << endl;

    cin >> c1;
    cout << c1 << " " << static_cast<int>(c1) << endl;

c1 값에 문자 한개가 아닌 'abc'를 입력하면, 다음 값을 출력할 때 까지 버퍼에 저장이 된다.

출력을 해보면 a먼저 처리되고, b가 처리된다

반대로 문자 1개를 입력받고 똑같이 2번만 출력되게 만들면 하나가 출력된 뒤, 한번더 입력할때까지 대기하게 된다.


char의 범위 ( limits 사용 )

#include <iostream>
#include <limits>

int main()
{
    using namespace std;
	
    char c1(65);

    cout << sizeof(char) << endl;
    cout << (int)std::numeric_limits<char>::max() << endl;
    cout << (int)std::numeric_limits<char>::lowest() << endl;
return 0;
}

#include <limits> 헤더파일을 사용하여 내부에 정의된 함수인 std::numeric_limits<char>::max()를 사용하여 1, 127, -128이 출력되는데,

std::numeric_limits<char>::max()를 쓰면 아스키 코드가 출력되므로 숫자로 출력 범위를 보기 위해 (int)로 캐스팅한다.

 

출력할 때, “(겹 따옴표)를 출력하려면
cout << “ “ ” << endl; 이아닌 cout << “ \” “ << endl; 처럼 \ 를 붙이면 출력이된다.

 

profile

잔잔이네

@잔잔잔잔

🌈

검색 태그