연산자 우선순위

이종현·2024년 1월 18일

C Language

목록 보기
2/3

연산자 우선순위란?

수학에서 사칙연산을 배울 때를 생각해보자 + - * / 덧셈, 뺄셈, 곱셈, 나눗셈이 한 번에 존재하는 수식을 어떻게 계산한다고 배웠는지를 생각해보자

자연스럽게 곱셈과 나눗셈을 먼저 계산한 후에 덧셈과 뺄셈을 하게 될 것이다. 이 와중에서도 곱셈과 나눗셈은 결합방향에 근거하여 나눗셈보다 곱셈이 먼저 계산된다.

C언어 에서도 이와 같은 연산자 우선순위가 존재하는데 아래 표와 같은 우선순위를 갖는다.

연산자 우선순위 표

우선순위연산자설명결합 법칙(방향)
x++증가 연산자(뒤, 후위)
x--감소 연산자(뒤, 후위)
( )함수 호출
1순위[ ]배열 첨자
.구조체/공용체 멤버 접근
->포인터로 구조체/공용체 멤버 접근
(자료형){값}복합 리터럴
-------------------------------------------------------------------------------
++x증가 연산자(앞, 전위)
--x감소 연산자(앞, 전위)
+x단항 덧셈
-x단항 뺄셈
2순위!논리 NOT
~비트 NOT
(자료형)자료형 캐스팅(자료형 변환)
*x포인터 x역참조
&xx의 주소
sizeof자료형의 크기
-------------------------------------------------------------------------------
*곱셈
3순위.나눗셈
%나머지
-------------------------------------------------------------------------------
+덧셈
4순위-뺄셈
-------------------------------------------------------------------------------
<<왼쪽으로 비트를 시프트
5순위>>오른쪽으로 비트를 시프트
-------------------------------------------------------------------------------
<작음(논리)
<=작거나 같음(논리)
6순위>큼(논리)
>=크거나 같음(논리)
-------------------------------------------------------------------------------
==같음
7순위!=다름
-------------------------------------------------------------------------------
8순위&AND(비트)
-------------------------------------------------------------------------------
9순위^XOR(비트)
-------------------------------------------------------------------------------
10순위|OR(비트)
-------------------------------------------------------------------------------
11순위&&AND(논리)
-------------------------------------------------------------------------------
12순위||OR(논리)
-------------------------------------------------------------------------------
13순위? :삼항 연산자
-------------------------------------------------------------------------------
=할당
+=덧셈 후 할당
-=뺼셈 후 할당
*=곱셈 후 할당
/=나눗셈 후 할당
14순위%=나머지 연산 후 할당
<<=비트를 왼쪽으로 시프트 한 후 할당
>>=비트를 오른쪽으로 시프트한 후 할당
&=비트 AND 연산 후 할당
^=비트 XOR 연산 후 할당
|=비트 OR연산 후 할당
-------------------------------------------------------------------------------
15순위,쉼표 연산자

연산자 우선순위가 필요한 이유는 연산자 우선순위로 인해 다른 결과가 나올때 해결을 위해서는 가장 먼저 연산되어야 할 연산자에 괄호를 쳐주는 것이 가독성도 좋고 가장 간단하고, 컴파일러가 표현식을 발견하고 평가할때 괄호 안에 있는 연산자를 우선순위가 가장 높은것으로 간주하기 때문이다.

profile
기록장

0개의 댓글