일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Runtime constants
- Machine Learning
- 이코테
- C++
- 단항연산자
- #endif
- 기계학습
- 프로그래밍
- coursera
- CLion
- classification problem
- #define
- Greedy
- const
- 기계학습 기초
- 연산자
- compile time constants
- standford University
- 학습 알고리즘
- 홍정모님
- 코딩테스트
- decimal
- regression problem
- 형변환
- sizeof()
- 본즈앤올
- Andrew Ng
- 나동빈님
- 코드블럭 오류
- algorithm
- Today
- Total
wellcome_공부일기
C++ | 02.06 Boolean 자료형과 조건문 if 본문
<목차>
1. Boolean 자료형과 그 변수(Boolean variables)
2. Boolean 변수 출력하기(Printing Boolean variables)
3. 정수를 불린으로 변환하기(Integer to Boolean conversion)
4. 불린 값 입력하기(Inputting Boolean values)
5. 불린 리턴값(Boolean return values)
6. 연산자를 이용한 Boolean 자료형
7. 연습문제
Boolean 자료형과 그 변수(Boolean variables)
Boolean은 발명가인 George Boole으로부터 이름을 따온 이름입니다.
Boolean 변수는 true와 false 두개의 값만 취할 수 있습니다.
컴퓨터 입장에서는 1이냐 0이냐로 판단할 수 있습니다.(true는 1, false는 0)
Boolean 변수를 선언하기 위해서는 bool 키워드를 사용합니다.
bool b;
true or false 값을 Boolean 변수에 초기화(initialize) 혹은 대입(assign)하기 위해서는, true와 false 키워드를 사용합니다.
bool b1 = false; //copy initialization
bool b1 ( true ); //direct initialization
bool b2 { false }; //uniform initialization
b1 = false;
bool b3 {}; // default initialize to false
logical NOT 연산자(!)은 Boolean 변수의 값을 뒤바꿀 때 사용됩니다.
bool b1 { !true }; // b1 will be initialized with the value false
bool b2 { !false }; // b2 will be initialized with the value true
- Boolean 값은 실제로 "참" 또는 "거짓"이라는 단어로 부울 변수에 저장되지 않습니다.
- 대신, Boolean 값은 정수로 저장됩니다.
- true은 정수 1이 되고, false은 정수 0이 됩니다.
- 마찬가지로, 컴파일러가 Boolean 값을 평가할 때 실제로 "true" 또는 "false"로 코드가 타이핑되어 있어도 "true" 또는 "false"로 평가하지 않고 0(거짓) 또는 1(참)으로 평가하고 또한 출력도 0과 1이 나옵니다.
- boolalpha를 사용하면 "true" 또는 "false"를 출력할 수 있습니다.
- Boolean은 메모리에 정수를 저장하기 때문에, 일체형 타입(integral type)으로 간주됩니다.
- 일체형 타입(integral type)이란 기본 값이 정수로 저장되고 크기가 1바이트로 보장된다는 것을 의미합니다.
Boolean 변수 출력하기(Printing Boolean variables)
우리가 Boolean 값을 출력할 때, std::cout은 0 혹은 1을 출력합니다.
#include <iostream>
int main()
{
std::cout << true << '\n'; // true evaluates to 1
std::cout << !true << '\n'; // !true evaluates to 0
bool b{false};
std::cout << b << '\n'; // b is false, which evaluates to 0
std::cout << !b << '\n'; // !b is true, which evaluates to 1
return 0;
}
- 만약 0과 1이 아닌 "true" 혹은 "false"로 출력하고 싶다면, std::boolalpha를 이용하면 됩니다.
#include <iostream>
int main()
{
std::cout << true << '\n';
std::cout << false << '\n';
std::cout << std::boolalpha; // print bools as true or false
std::cout << true << '\n';
std::cout << false << '\n';
return 0;
}
- 0과 1을 출력해주는 noboolalpha도 있습니다.
정수를 불린으로 변환하기(Integer to Boolean conversion)
Boolean 자료형은 uniform initialization을 이용하면서 정수로 초기화할 수 없습니다.
#include <iostream>
int main()
{
bool b{ 4 }; // error: narrowing conversions disallowed
std::cout << b;
return 0;
}
하지만, 어떤 문맥에서는 정수가 Boolean 값으로 변형될 수 있습니다.
정수 0이 false로 변환되고, 그 외는 다 true로 변환됩니다.
#include <iostream>
int main()
{
std::cout << std::boolalpha; // print bools as true or false
bool b1 = 4 ; // copy initialization allows implicit conversion from int to bool
std::cout << b1 << '\n';
bool b2 = 0 ; // copy initialization allows implicit conversion from int to bool
std::cout << b2 << '\n';
return 0;
}
불린 값 넣기(Inputting Boolean values)
int main()
{
bool b {}; // default initialize to false (0)
std::cout << "Enter a boolean value: ";
std::cin >> b;
std::cout << "You entered: " << b;
return 0;
}
- std::cin은 불린 변수의 숫자 0과 1, 두개의 값만 받습니다.
- 0이 아닌 std::cin은 항상 false로 간주하여 true 혹은 false를 입력해도 0이 나옵니다.
불린 리턴값(Boolean return values)
Boolean 함수는 리턴값도 Boolean값으로 받는다.
#include <iostream>
using namespace std;
bool isEqual(int a, int b)
{
bool result = (a==b);
return result;
}
int main()
{
cout << std::boolalpha;
cout << isEqual(1,1) <<endl;
cout << isEqual(0,3) <<endl;
if (5)
{
cout << "True" << endl;
}
else
{
cout << "False" <<endl;
}
return 0;
}
- if문에 0이 아니면 다 true로 간주함으로, 위의 이론을 응용하여 5를 넣었습니다. 하지만 true로 써야 좋습니다.
연산자를 이용한 Boolean 자료형
- &&(and)연산자와 ||(or)연산자 결과
#include <iostream>
using namespace std;
int main()
{
cout << (true && true) << endl; //output: 1
cout << (true && false) << endl; //output: 0
cout << (false && true) << endl; //output: 0
cout << (false && false) << endl; //output: 0
cout << (true || true) << endl; //output: 1
cout << (true || false) << endl; //output: 1
cout << (false || true) << endl; //output: 1
cout << (false || false) << endl; //output: 0
return 0;
}
- if문을 이용한 Boolean 출력
#include <iostream>
using namespace std;
int main()
{
if (3>1)
cout << "This is true" << endl;
else
cout << "This is false" << endl;
return 0;
}
- if 괄호가 true or false일때에 따라 다음 문장이 실행되고, 실행되지 않습니다.
- true or false는 연산 계산도 포함됩니다.
연습문제
정수 하나를 입력받고 그 숫자가 홀수인지 짝수인지 출력하는 프로그램을 만들어봅시다.
#include <iostream>
int main()
{
using namespace std;
int x;
cin >> x;
if ( x%2 == 1 )
cout << "This is odd" << endl;
else
cout << "This is not odd" << endl;
return 0;
}
- 삼항 연산자(조건 연산자)를 이용하면 한줄로 프로그램을 짤 수 있습니다!
#include <iostream>
using namespace std;
int main()
{
int x;
cin >> x;
cout<< (x%2==0 ? true : false) << endl;
return 0;
}
* 위 포스팅은 홍정모님의 따라 배우는 C++과 learncpp에서 공부한 토대로 작성하였습니다.
'프로그래밍 > C++' 카테고리의 다른 글
C++ | 02.08 std::endl vs ‘\n’ 그리고 std::flush (0) | 2020.05.09 |
---|---|
C++ | 02.07. 문자 자료형(Char Data Type) (0) | 2020.05.08 |
C++ | 02.05. 부동소수점 수(Floating Point Numbers) (0) | 2020.05.06 |
02.04. C++ | 무치형(Void Data Types) = No Type! (0) | 2020.05.05 |
02.03. C++ | 고정너비 정수(Fixed-width integers)란? (0) | 2020.05.04 |