본문 바로가기

Embedded Programming/C/C++

연산자 우선순위와 결합방향

연산자 우선순위란, 같은 항에서 연산자가 겹쳤을 때 

어느 연산자가 가장 우선권을 갖고 먼저 처리하느냐를 정해놓은 것이다.

이러한 우선순위를 굳이 달달 외울 필요는 없지만, 

우선순위가 적용되어 처리되는 경우가 간간이 있으므로

연산자간 우선순위가 있다는 정도만이라도 알아두면 좋을 것 같다.



순위

연산기호

연산자

결합방향

1

()

함수호출

[]

배열 인덱스

->

간접지정(구조체 멤버)

.

직접지정(구조체 멤버)

++, -- (변수 뒤에서 증가/감소)

후위증가/감소

2

++, -- (변수 앞에서 증가/감소)

전위증가/감소

sizeof

바이트 단위 크기 계산

~

비트단위 NOT연산 (비트 반전)

!

논리 NOT

-, +

부호 연산(음수, 양수 표현)

&

주소 연산

*

간접지정 연산 (포인터)

3

(자료형)

자료형 변환 (CASTING)

4

*, /, %

곱셈, 나눗셈, 나머지 연산

5

+, -

덧셈, 뺄셈

6

<<, >>

비트단위 이동(시프트 연산)

7

<, >, <=, >=

대소비교

8

==, !=

동등비교

9

&

비트 AND연산

10

^

비트 XOR연산

11

|

비트 OR연산

12

&&

논리 AND

13

||

논리 OR

14

? :

조건 연산

15

=, +=, -=, *=, /=, %=, …

대입 연산

16

,

콤마 연산


* 결합방향 : 같은 순위의 연산자가 하나의 수식에 존재하는 경우 우선적으로 연산하는 방향