연산자란?
- 연산 후 결과를 반환하는 것.
연산자의 종류
- 산술 연산자, sizeof연산자, 대입 연산자, 논리 연산자, 비트단위 연산자
- 단항 연산자(피 연산자 하나), 이항 연산자(피 연산자 둘), 삼항 연산자(피 연산자 셋)
##1. 산술 연산자 (이항 연산자)
+, -, *, /, %
연산자 우선수위를 생각하여 소괄호로 묶어주자!
##2. sizeof 연산자 (단항 연산자)
/*
sizeof( 자료형/변수명 )
*/
확인하고 싶은 자료형 또는 변수명을 전달하면,
해당 자료형 또는 변수명의 크기를 byte 단위로 반환한다!
char chTest = 'A';
bool bTest = true;
short nTest = 10;
int iTest = 20;
long lTest = 30;
float fTest = 3.14f;
long long llTest = 40;
double dTest = 3.1415;
long double ldTest = 3.141592;
//cout << "char의 크기: " << sizeof(char) << endl;
//cout << "chTest의 크기: " << sizeof(chTest) << endl;
//cout << "========================================" << endl;
//cout << "bool의 크기: " << sizeof(bool) << endl;
//cout << "bTest의 크기: " << sizeof(bTest) << endl;
//cout << "========================================" << endl;
//cout << "short의 크기: " << sizeof(short) << endl;
//cout << "nTest의 크기: " << sizeof(nTest) << endl;
//cout << "========================================" << endl;
//cout << "int의 크기: " << sizeof(int) << endl;
//cout << "iTest의 크기: " << sizeof(iTest) << endl;
//cout << "========================================" << endl;
//cout << "long의 크기: " << sizeof(long) << endl;
//cout << "lTest의 크기: " << sizeof(lTest) << endl;
//cout << "========================================" << endl;
//cout << "float의 크기: " << sizeof(float) << endl;
//cout << "fTest의 크기: " << sizeof(fTest) << endl;
//cout << "========================================" << endl;
//cout << "long long의 크기: " << sizeof(long long) << endl;
//cout << "llTest의 크기: " << sizeof(llTest) << endl;
//cout << "========================================" << endl;
//cout << "double의 크기: " << sizeof(double) << endl;
//cout << "dTest의 크기: " << sizeof(dTest) << endl;
//cout << "========================================" << endl;
//cout << "long double의 크기: " << sizeof(long double) << endl;
//cout << "ldTest의 크기: " << sizeof(ldTest) << endl;
//cout << "========================================" << endl;
//char chA = 'A';
//char chB = 'B';
//cout << sizeof(chA + chB) << endl; // 4bytes
//// char는 단일 문자 자료형이지만 저장하는 데이터는 정수형이다.
//// chA + chB 는 단순 정수간의 더하기 연산을 수행한다.
//// 연산 후 결과를 반환해야 하며, 해당 결과는 리터럴 상수로 임시 메모리에 저장이 된다.
//// 임시 메모리에 정수형이 저장되니 int형으로 간주하여 4bytes만큼의 공간을 할당 받는다.
//// 결국 sizeof로 확인한 영역은 임시 메모리 영역이다!
// ##3. 대입 연산자 (이항 연산자)
// =
// 대입 연산자 기준 우측에서 좌측으로 대입(할당)이 이루어진다!
int iA = 10, iB = 20, iC = 30;
iA = iB;
iB = iC;
iA = iB = iC = 200;
cout << iA << ", " << iB << ", " << iC << endl;
##4. 논리 연산자
: 참 또는 거짓을 반환하는 연산자.
// 피 연산자로 조건을 받아 둘 다 참일경우 또는 둘 중 하나가 참일경우 등을 판단하는 연산자
// &&(and), ||(or), !(not)
////// ##4. 논리 연산자_##1. &&(and) (이항 연산자)
////// 두 조건이 참일 경우 참(1), 하나라도 거짓일 경우 거짓(0)이 된다.
////cout << (true && true) << endl; // 1
////cout << (true && false) << endl; // 0
////cout << (false && true) << endl; // 0
////cout << (false && false) << endl; // 0
//// 시작부터 거짓이 올 경우 다음 연산은 수행하지 않는다!
//int iA = 10, iB = 20;
////cout << (true && (iA = iB)) << endl; // 1
////cout << iA << ", " << iB << endl; // 20, 20
//cout << (false && (iA = iB)) << endl; // 0
//cout << iA << ", " << iB << endl; // 10, 20
////// ##4. 논리 연산자_##2. ||(or) (이항 연산자)
////// 둘 중 하나라도 참이면 참(1), 둘 다 거짓이어야만 거짓(0)이 된다!
////cout << (true || true) << endl; // 1
////cout << (true || false) << endl; // 1
////cout << (false || true) << endl; // 1
////cout << (false || false) << endl; // 0
//// 시작부터 참이 올 경우 다음 연산은 수행하지 않는다.
//int iA = 10, iB = 20;
////cout << (true || (iA = iB)) << endl; // 1
////cout << iA << ", " << iB << endl; // 10, 20
//cout << (false || (iA = iB)) << endl; // 1
//cout << iA << ", " << iB << endl; // 20, 20
// ##4. 논리 연산자_##3. !(not) (단항 연산자)
// 논리 부정
// 참과 거짓을 서로 바꾼다!
cout << !true << endl;
cout << !false << endl;
}
#include <iostream>
#include <bitset>
using namespace std;
void main()
{
//// bitset
//// 정수를 데이터로 취한다!
//// 받아온 정수를 2진수로 변환한 값을 보여준다.
//// bitset을 사용하기 위해서는 #include <bitset>의 추가가 필요하다.
///*
//bitset<자릿수> 변수명
//*/
//bitset<8> bitA = 10;
//// 0000 1010
//cout << bitA << endl;
// ##5. 비트 단위 논리 연산자
// 비트 단위로 연산을 수행한다.
// &(and), |(or), ^(xor), ~(not)
//// ##5. 비트 단위 연산자_##1. &(and) (이항 연산자)
// 두 비트열이 모두 1이면 1, 하나라도 0이면 0이된다.
//bitset<4> bitA = 12, bitB = 5, bitC = 0;
//cout << bitA << endl;
//cout << bitB << endl;
//cout << "=================" << endl;
//bitC = bitA & bitB;
//cout << bitC << endl;
//// ##5. 비트 단위 연산자_##2. |(or) (이항 연산자)
//// 둘 중 하나라도 1이면 1이된다. 둘 다 0일 경우 0이된다!
//bitset<4> bitA = 12, bitB = 5, bitC = 0;
//cout << bitA << endl;
//cout << bitB << endl;
//cout << "=================" << endl;
//bitC = bitA | bitB;
//cout << bitC << endl;
//// ##5. 비트 단위 연산자_##3. ^(xor) (이항 연산자)
//// 두 비트열이 다르면 1, 같으면 0
//bitset<4> bitA = 12, bitB = 5, bitC = 0;
//cout << bitA << endl;
//cout << bitB << endl;
//cout << "=================" << endl;
//bitC = bitA ^ bitB;
//cout << bitC << endl;
//// ##5. 비트 단위 연산자_~(not)
//// 0과 1을 서로 바꾼다!
//// -> 비트 반전(1의 보수)
//bitset<4> bitA = 5, bitB = 0;
//cout << bitA << endl;
//cout << "================" << endl;
//bitB = ~bitA;
//cout << bitB << endl;
//// ##6. 비트 단위 쉬프트 연산자
//// <<, >>
//// 본 기능은 비트단위 쉬프트 연산자이다.
//// 단, 연산자 앞에 cout이 있을 경우 추출 연산자로 사용될 뿐이다!
//// 모든 비트열을 화살표 방향으로 이동 시킨다!
//// -> 연산자 기준 좌측 데이터의 모든 비트열, 연산자 기준 우측 값만큼 이동시킨다!
//// 2의 n승으로 곱하거나(<<), 나누는데(>>) 사용된다!
//bitset<8> bitA = 10, bitB = 0;
//cout << bitA << endl;
//cout << "========================" << endl;
//bitB = bitA << 3;
//cout << bitB << endl;
// cin
// Console Input의 약자.
// 데이터를 입력받을 때 사용한다!
// 단, cout에서는 <<
// cin 에서는 >> (여기에다!)
int iA = 0;
cin >> iA;
cout << iA << endl;
}
#include <iostream>
using namespace std;
void main()
{
//// 축약 연산자
//// 연산자 2개를 합한 것.
//// 연산자 1개는 = 연산자를 사용하여 합한다.
//// +=, -=, *=, /=, %=, <<=, >>=
//int iPlayerHp = 100;
//int iMonsterAtt = 10;
//iPlayerHp = iPlayerHp - iMonsterAtt;
//iPlayerHp -= iMonsterAtt;
}
#include <iostream>
using namespace std;
void main()
{
// 증감 연산자
// ++, --
// 피 연산자의 값을 1 증가/감소 시킬 때 사용한다
//// ##1. 전위 증감
//// -> 연산자가 피 연산자 앞에 붙는다.
//// 선 증감 후 연산
//// 연산 시 본인이 직접 연산을 수행한다.
//int iA = 5;
//cout << ++iA << endl;
//cout << iA << endl;
// ##2. 후위 증감
// -> 연산자가 피 연산자 뒤에 붙는다.
// 선 연산 후 증감
// 본인과 동일한 임시 객체를 하나 만든다.
// 이후, 연산은 새로 만든 임시 객체로 수행하고 본인은 증가를 진행한다.
// -> 임시 객체는 말 그대로 임시이기 때문에 코드라인을 벗어나는 즉시 소멸한다.
int iA = 5;
cout << iA++ << endl;
cout << iA << endl;
}
C++ 형변환, if, switch, goto, 자판기 프로그램 (0) | 2020.10.07 |
---|---|
C++ 성적관리 프로그램 (0) | 2020.10.07 |
C++ 자료형 표기법 N진수 (0) | 2020.10.07 |
C++ #2. 변수와 자료형 (0) | 2020.10.07 |
C++ 시작(#1. 실행파일 생성하기) (0) | 2020.10.07 |