
각 연산자는 우선순위 동등한 우선순위 내에서는 왼항부터 우선순위를 갖는 경우가 있고, 오른항부터 우선순위를 갖는 경우가 있습니다.
피 연산자가 한개인 산술 연산자를 단항 산술 연산자라고 합니다.
+,-가 존재합니다.
피 연산자가 두개인 산술 연산자를 이항 산술 연산자라고 합니다.
+ : 왼항과 오른항을 더합니다.- : 왼항에서 오른항을 뻅니다.* : 왼항에서 오른항을 곱합니다./ : 왼항에서 오른항을 나눕니다.% : 왼항에서 오른항을 나눈값의 나머지를 구합니다.정수와 정수간에 나눗셈을 수행하면 정수가 나옵니다.
정수의 나눗셈 : 8 / 4 == 2
정수와 부동 소수점 실수간에 나눗셈을 수행하면 부동소수점 실수가 나옵니다.
정수와 부동소수점 실수 나눗셈 : 7 / 4 == 1.75
모듈러 연산자는 나머지 연산자
%입니다.
모듈러 연산자는 정수의 연산밖에 지원을 하지 않습니다.
모듈러 연산자가 부동소수점 실수에 대한 연산을 지원하지 않는 이유는 다음과 같습니다.
부동 소수점 실수에서 나머지가 발생할 떄 표현체계 상에서 어떻게 표현해야할지를 정할 수 없다. => 너무 방대하다.
파악하지 못한 여러가지 이유가 더 있을 수는 있지만 다음과 같은 이유로 인해 부동 소수점 실수에 대해서는 모듈러 연산을 지원하지 않습니다.
x += y : x = x + y 와 동일합니다.x -= y : x = x - y 와 동일합니다.x *= y : x = x * y 와 동일합니다.x /= y : x = x / y 와 동일합니다.x %= y : x = x % y 와 동일합니다. 후위 연산의 경우 연산자 우선순위가 가장 나중으로 밀리기 때문에 의도와 다른 연산결과를 나타낼 위험성이 있으므로 뚜렷한 의도를 가지고 사용하는 것이 아니라면 전위연산을 사용하는 습관이 좋습니다.
++x : x에서 1이 더해진 값을 반환합니다. 왼항부터 오른항 순서로 우선순위가 높습니다.--x : x에서 -1이 더해진 값을 반환합니다. 왼항부터 오른항 순서로 우선순위가 높습니다.x++ : 오른항부터 왼항 순서로 우선순위가 높습니다. 연산이 종료된 뒤 x의 값을 1 더합니다.x-- : 오른항부터 왼항 순서로 우선순위가 높습니다. 연산이 종료된 뒤 x의 값을 1 뺍니다.int x = 8
int y = (x++) + 5 (++x)
// 연산 순서
1. (x + 5) = 8 + 5 == 13
2. x++ => x == 9
3. ++x => x == 10
4. 13 + 10 = 23
5. y = 23
bool x = true; // 1
bool y = false; // 0

대입 연산자는
=입니다.
값을 할당하는데 사용합니다.
&왼항과 오른항이 모두 참일 떄만 1입니다.
그 외의 경우는 모두 0입니다.
|왼항과 오른항이 모두 거짓일 때만 0입니다.
그 외의 경우는 모두 1입니다.
^왼항과 오른항의 값이 다를 때만 1입니다.
그 외의 경우는 모두 0입니다.
<<모든 비트를 왼항으로 한칸 움직입니다.
가장 왼쪽 항은 사라집니다.
가장 오른쪽 항에 0을 추가합니다.
2를 곱한것과 같습니다.
==
>>모든 비트를 오른항으로 한칸 움직입니다.
가장 오른쪽 항은 사라집니다.
가장 왼쪽 항에 0을 추가합니다.
2를 나눈것과 같습니다.
==
A ? B : C 에서 A가 참이면 B가 할당, 거짓이면 C가 할당입니다.
x = (expression) ? statement1 : statement2의 형태입니다.
즉 expression이 참이면 x = statement1 할당, 거짓이면 statement2 할당입니다.
int test = 20;
// test가 20이 참이면 x = 100 구문이 작동
// test가 20이 아니면 x = 200 구문이 작동.
int x = test == 20 ? 100 : 200;
단항 산술연산자의 종류와 이항 산술 연산자의 종류를 나열하고 설명해주세요.
전위 연산과 후위 연산의 차이점을 설명해주세요.
다음과 같은 문제에서 y의 값과 연산의 순서를 말해주세요.
// y의 값은?
int x = 8;
int y = x-- + 10 + --x;
비트 연산을 이용하여 status 변수에 POISON과 TIRED 상태 값을 추가 해주세요.
#define POISON (1 << 0)
#define THIRSTY (1 << 1)
#define TIRED (1 << 2)
#define FIRE (1 << 3)
#define COLD (1 << 4)
int main()
{
unsigned int status = 0;
}
비트 연산을 이용하여 status 변수에서 TIRED와 COLD의 상태값을 제거해주세요.
#define POISON (1 << 0)
#define THIRSTY (1 << 1)
#define TIRED (1 << 2)
#define FIRE (1 << 3)
#define COLD (1 << 4)
int main()
{
unsigned int status = 31; // 16 + 8 + 4 + 2 + 1
}