승쨩개발공부

[C++] 연산자 / 형 변환 본문

C++

[C++] 연산자 / 형 변환

SeungHyune 2021. 11. 23. 18:31

연산자

연산 후에 결과를 반환하는 것.

 

 

연산자의 종류

산술 연산자, 대입 연산자, sizeof연산자, 관계 연산자, 논리 연산자, 비트 단위 연산자,

단향 연산자, 이향 연산자, 삼향 연산자 가 있다.

 

1. 산술 연산자 (이향 연산자)

+, -, /, %

 

%(나머지 연산자)

프로그래밍에서는 나머지 연산자도 많이 사용된다.

어떤 값을 몇으로 나머지 연산을 수행하느냐에 따라 나오는 개수가 고정될 수 있다.

5 / 3 -> 1   몫

5%3 -> 2   나머지

 

 

2. 대입 연산자 (이향 연산자)

=(대입 연산자)

우측에서 좌측으로 대입(복사)가 이루어진다.

단, 대입 연산자 기준 양 항은 같은 타입의 자료형이어야 한다

int   iA = 10;

int   iB = iA;

 

 

3. Sizeof 연산자 (단항 연산자)

괄호 안에 넣어주는 자료형의 크기 또는 변수가 할당된 메모리의 크기를

byte단위로 반환해주는 연산자

sizeof(자료형 / 변수명)

 

 

4. 관계 연산자 (이향 연산자)

두 피연산자의 대소관계를 비교한다

>, <, >=, <=, ==, !=

연산 후 참(1) 또는 거짓(0)을 반환한다.

 

 

5. 논리 연산자

두 피 연산자가 모두 참일 경우 또는 하나라도 참일 경우 등을 판별할떄 사용한다.

&&(and), ||(or), !(not)

 

 

1. &&(and) (이향 연산자)    (그리고)

두 피연산자가 모두 참일 경우 참이 나온다.

두 피연산자 중 하나라도 거짓이 올 경우에는 거짓이 나온다.

시작부터 거짓이 올 경우 다음 연산은 수행하지 않는다.

 

 

2. ||(or) (이향 연산자)    (또는)

둘 중 하나라도 참일 경우 참이 반환된다

둘 다 거짓일 경우에만 거짓이 반환된다.

시작부터 참이 올 경우에는 다음 연산은 수행하지 않는다

 

 

3.!(not) (단항 연산자)   (아니다)

논리 부정

참 또는 거짓을 반대로 바꾼다

 

 

 

6. 비트 단위 논리 연산자

같은 비트열끼리 논리 연산을 수행하는 것.

& (and), | (or), ^(xor), ~(not)

 

 

1. &(and) (이향 연산자)   (그리고)

두 비트가 모두 1일 경우 1이 된다.

두 비트중 하나라도 0일 경우 0이 된다.

 

 

2. |(or) (이향 연산자)     (또는)

두 비트가 하나라도 1이면 1이 된다.

두 비트가 모두 0일 경우에만 0이 된다. 

 

 

3. ^(xor)  (이향 연산자)

두 비트가 같으면 0을 반환

두 비트가 다를경우 1을 반환

 

 

4. ~(not) (단항 연산자)   (아니다)

0은 1로, 1은 0으로 바꾸는 연산자

비트 반전(1의 보수)

 

 

7. 쉬프트 연산자 , 비트단위 쉬프트 연산자

<<. >>

 

1. 쉬프트 연산자

2의 n승으로 곱하거나 (<<) 나눌떄 (>>) 사용한다.

 

2. 비트단위 쉬프트 연산자.

본 기능은 쉬프트 연산자 이지만 cout/cin 과 만나면서 입출력 연산자로 사용이 되었다.

정수 << 정수

좌측 정수의 비트열을 우측 정수의 값만큼 꺽쇠 방향으로 이동시켜주는 연산자.

비트를 이동시키다가 표현 범위를 넘어가면 값이 손실된다.

또한, 부호비트가 변경될 가능성이 있다.

 

 

형 변환

서로 다른 자료형을 같은 자료형으로 만들 수 있는 것.

-> 자료형을 변환 시키는 것.

 

형 변환 규칙

1. 대임 연산자 기준

대입 연산자 기준 좌측 좌료형으로 형 변환이 발생한다

 

 

묵시적 형 변환

사용자가 명시하지 않는 것을 컴파일러가 자동으로 바꿔주는 것.

단점으로는 경고 메세지가 출력될 수 있다 하지만 명시적 형 변환으로 해결할 수 있다.

 

명시적 형 변환 ex)

컴파일러에게 자료형을 반환한다고 알려주는것

float fA = (float)3;

int   iB  = (int)3.14;

 

 

 

축약 연산자

= (대입 연산자)를 추가하여 연산자를 합친 것.

+=, -=, *=, /=, %=, >>=, |=, &=

 

ex)

int iPlayer Hp = 100,  iMonsterAtt = 10;

 

축약 연산자를 사용하지 않을 경우

iPlayerHp = iPlayerHp  - iMonsterAtt;

 

축약 연산자를 사용할 경우

iPlayerHp -= iMonsterAtt;

 

 

증감 연산자

++, --

피 연산자의 값을 1 증가 또는 1감소시켜주는 연산자.

전위 , 후위 에 따라 작동 원리가 달라진다.

 

1.전위 증감

연산자가 피 연산자 앞에 붙는다

선 증감 후 연산으로 작동한다.

자기 자신이 증가한 후 연산 또한 자기 자신이 적용된다

ex) int iA = 3;
cout << "iA: " << ++iA << endl;
cout << "iA: " << iA << endl;

 

2. 후위 증감

연산자가 피 연산자 뒤에 붙는다

선 연산 후 증감 으로 작동한다.

자기 자신과 똑같은 임시 변수를 만들어 놓는다

이후 자기 자신은 증감 연산을 수행하고, 연산에 반영되는 것은 임시 변수가 반영된다.

-> 임시 변수는 말 그대로 임시이기 떄문에 코드라인을 벗어나는 즉시 소멸한다.

ex) int iA = 3;
cout << "iA: " << iA++ << endl;
cout << "iA: " << iA << endl;

 

 

삼향 연산자

피 연산자가 셋인 연산자를 삼향 연산자라 한다.

(피연산자1) ? (피 연산자2) : (피 연산자3)

 

피 연산자1 : 조건(참/거짓)을 피 연산자로 설정한다.

피 연산자2 : 피 연산자1의 조건이 참일 경우 수행하는 곳.

피 연산자3 : 피 연산자1의 조건이 거짓일 경우 수행하는 곳.