
<aside> 💡 목차
</aside>
https://github.com/POCU/COMP1500CodeSamples
우선순위
**다양한 연산자**들이 있을 때 어떤 게 먼저 연산해야 되고, 어떤 게 나중에 연산해야 되어야 하는가?
결합 법칙 (좌측 & 우측 연관성)
**동일한 우선순위 를 가진 연산자**들이 있을 때 왼쪽 에서 오른쪽으로 전개해야 하는가 오른쪽에서 왼쪽으로 전개해야 하는가?
평가 순서 (단락평가)
어떤 항을, 어떤 표현식을 먼저 표현 할 것이냐?
<aside> 💡 우선순위를 전부 외우진 않습니다
</aside>
위로갈수록 우선순위 높음
| 연산자 | 결합 순서 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ⬆️ | 후위(Postfix) | L → R |
{} |
[] |
-> |
++ |
-- |
||||||
| 단항 | L → R |
+ |
- |
! |
~ |
++ |
-- |
(type)* |
sizeof |
||||
| 곱셈, 나눗셈 | L → R |
* |
/ |
% |
|||||||||
| 덧셈, 뻴셈 | L → R |
+ |
- |
||||||||||
| 쉬프트(shift) | L → R |
<< |
>> |
||||||||||
| 관계(Relational) | L → R |
< |
<= |
> |
>= |
||||||||
| 같음(Equality) | L → R |
== |
!= |
||||||||||
| AND 비트 연산 | L → R |
& |
|||||||||||
| XOR 비트/논리 연산 | L → R |
^ |
|||||||||||
| OR 비트 연산 | L → R |
` | ` | ||||||||||
| AND 논리 연산 | L → R |
&& |
|||||||||||
| OR 논리 연산 | L → R |
` | ` | ||||||||||
| 조건(Conditional) | R → L |
?: |
|||||||||||
| 대입 | R → L |
= |
+= |
-= |
*= |
/= |
%= |
>>= |
<< = |
&= |
^= |
` | |
| ⬇️ | 콤마 | L → R |
, |
연산자 결합 법칙은 그게 아니라 우선순위가 동일한 여러 가지 연산자가 있을 때 어느 방향으로 연산 을 해나가냐는 얘기예요.
똑같은 연산자를 써도 상관이 없어요 .
a + b + c, 이러면 어떻게 돼요?
a, b 더한 결과를 c에 더하죠?
그래서 얘네 같은 경우는 왼쪽에서 오른쪽으로 간다라고 얘기하는 거예요.
이 방향 자체가 왼쪽에서 오른쪽으로 가기 때문에.
대부분의 연산자는 왼쪽에서 오른쪽 이기 때문에 신경을 쓸 필요가 없어요
<aside>
💡 대입 연산자 =는 R → L 방향으로 연산된다

c + d 가 대입연산자보다 우선순위가 높기 때문에 연산이 먼저되고
L → R 방향으로 연산되기지만,대입연산자부터는 반대방향으로 대입됨
</aside>
<aside> 💡 결합법칙은 곧 좌측,우측 연관성으로 표현할 수 있습니다.

대수학이랑 똑같아... 같은 우선순위라면 순서대로 실행됨
</aside>
📙<aside> 💡 Infix to Postfix 하시오
| x = a+b / d+c | x = a + (b/d) + c | |
|---|---|---|
| x += a * b; | x += (a * b) | |
| if (a == b && c == d) | if ((a == b) && (c == d)) | |
| if (a <= b && c >= d) | if ((a <= b) && (c >= d)) | |
| if (a && b | d) | |
| x = a++ * d | x = (a++) * d | |
| x = ++a * d | x = (++a) * d | |
| x = a ? b : c ? d : e | x = a ? b :( c ? d : e) | R → L |
</aside>