불리언 ( 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; 처럼 \ 를 붙이면 출력이된다.
'개발 > C++' 카테고리의 다른 글
[C++] 3.1 연산자와 증감연산자 (0) | 2023.06.13 |
---|---|
[C++] 2.4 리터럴 상수, 심볼릭 상수 (0) | 2023.06.12 |
[C++] 2.2 부동소수점 (0) | 2023.06.01 |
[C++] 2.1 자료형, 정수형, 고정너비 정수, 무치형(Void) [auto, 초기화, 오버플로우, void] (0) | 2023.05.31 |
[C++] 1.2 헤더파일과 헤더가드 [#pragma once] (0) | 2023.05.31 |