대입 연산자
- 종류 : =
산술 연산자
- 종류 : +, -, *, /(몫), %(나머지)
int data = 10 + 10;
data = 10/3; //정수/정수, 정수%정수 -> 가능
data = 10.%3.; //실수%실수, 실수%정수, 정수%실수 -> 오류
data = 10./3.; //실수/실수 -> 가능하지만 data type이 int이므로 정수로 표현되고 경고 표시
data = (int)(10./3.); //데이터 타입을 명시적으로 변환
// 숫자 뒤에 f를 붙일 경우, float(4byte) 실수로 보겠다는 것
// 숫자 뒤에 f를 붙이지 않을 경우, double(8byte) 실수로 보겠다는 것
증감 연산자
- 종류 : ++, --
- 특징 : 한 단계 증가 또는 감소
int data = 0;
++data; //전위(전치)
data++; //후위(후치) : 연산자 우선순위가 가장 나중으로 밀린다.
//자기 자신과 연산할 때에는 ++,--의 위치가 상관없지만 습관적으로 전위로 쓰는게 더 좋다.
논리 연산자
- 종류 : !(역), &&(And), ||(Or)
- 특징 : 참(0이 아닌 값, 주로1), 거짓(0)을 표현하고 주로 bool 자료형을 쓴다.
bool truefalse = false; //0
bool IsTrue = 100; //0이 아니므로 true로 받아들여져서 1이 된다.
int iTrue = 0; //false(0)
iTrue = !iTrue; //true(1)
int jTrue = 100; //true(1)
jTrue = !jTrue; //false(0)
iTrue = 100 && 200; //true && true -> true(1)
iTrue = 0 && 200; //false && true -> false(0)
iTrue = 0 || 300; //false || true -> true(1)
iTrue = 0 || 0; // false || false -> false(0)
비교 연산자
- 종류 : ==, !=, >, <, >=, <=
- 특징 : 대부분 if/else, switch 구문과 같이 쓰인다.
// 1. if-else 구문
// if-else if-else로 묶을 건지, if-if-if-else로 묶을 건지 고민해야 한다.
int data = 0;
if (0 && 200)
{
data = 100;
}
if (data == 100)
{
// if가 참인 경우 수행
}
else
{
// if가 거짓인 경우 수행
}
if (){}
else if (){}
else if (){}
else {}
// 2. switch case
switch(10) // 상수 또는 변수
{
case 10:
break;
case 20:
break;
default:
break;
}
int iTest = 20;
switch (iTest)
{
case 10:
case 20:
case 30:
break;
default:
break;
}
if (iTest == 10 | iTest == 20 | iTest == 30)
{
break;
}
else
{
break;
}
삼항 연산자
- 종류 : :?
iTest == 20 ? iTest = 100 : iTest = 200; //iTest가 20이면 100, 아니면 200
비트 연산자
- 종류
- <<, >> : 왼쪽/오른쪽으로 한 칸 이동
- &(곱) : 둘 다 1인 경우 1
- |(합) : 둘 중 하나라도 1인 경우 1
- ^(xor) : 같으면 0, 다르면 1
- ~(반전) : 0은 1로, 1은 0으로
// @전처리기
// 모든 컴파일 과정 중에서 제일 먼저 수행된다.
// 장점 : 가독성(문자열로 적어도 숫자로 자동 매칭된다.), 코드 유지 보수(HUNGRY 값이 3으로 바뀌어도 코드 수정 필요 없다.)
#define HUNGRY 0x001 //16진수 기준 숫자
#define THIRSTY 0x002
#define TIRED 0x004
#define FIRE 0x008
#define COLD 0x010
#define POISON1 0X020
#define POISON2 0X040
#define POISON3 0X080
#define POISON4 0X100
#define POISON5 0X200
#define POISON6 0X400
#define POISON7 0X800
unsinged char byte = 1; //00000001
byte << 1; //00000010 (2진수에서는 한 칸 이동하면 전체 2배 증가)
byte <<= 1; //byte = byte << 1
byte <<= 2; //4배 증가
byte <<= 3; //8배 증가
byte >>= n; //2^n으로 나눈 몫
// @상태 추가
unsinged int iStatus = 0;
iStatus |= HUNGRY;
iStatus |= THIRSTY;
// @상태 확인
if (iStatus & THIRSTY)
{
// THIRSTY 자리에 1이 들어있으면 참, 아니면 거짓
}
// @특정 자리 비트 제거
// 11101010
// THIRSTY = 00000010, ~THIRSTY = 11111101
// & -> 11101000 (THIRSTY 비트 1이 0으로 바뀜, 비트가 0이였어도 0이 된다.)
iStatus &= ~THIRSTY;
'Programming > C++' 카테고리의 다른 글
[C++] 배열 (0) | 2025.06.01 |
---|---|
[C++] 반복문(for, while) | 함수(w/ 재귀함수) (0) | 2025.06.01 |
[C++] 입출력 (0) | 2025.06.01 |
[C++] 자료형 (0) | 2025.05.31 |
[C++] 컴퓨터 언어와 운영체제, 그리고 프로그래밍 언어 (2) | 2025.05.31 |