이제까지 우리는 몇가지 연산에 대해서 알아보았습니다. 대입연산, 산술연산, 비트연산 등등을 알아보았죠. 그런데 혹시 기억하시나요? 우리가 초등학교 다닐 때 배웠던 사칙연산이나 방정식에도 계산의 순서가 있었죠? 그렇듯이 C언어에서 프로그램이 구동할 때도 연산의 순서가 정해져 있습니다. 이것을 연산의 우선순위라고 합니다. 오늘은 이 연산의 우선순위에 대해서 이야기 해 보겠습니다.
두괄식으로 바로 표부터 하나 보고 시작하겠습니다.
연산 순위 | 연산자 | 연산방향 |
1 | ( ) 함수호출 | 왼쪽 우선 |
[ ] 배열 첨자 | ||
(expr)++ 후위 증가 연산자 | ||
(expr)-- 후위 감소 연산자 | ||
. 구조체/공용체 멤버 접근 | ||
→ 포인터로 구조체/공용체 멤버 접근 | ||
2 | ! 논리 NOT | 오른쪽 우선 |
~ 비트 NOT | ||
sizeof 자료형 크기 | ||
& 주소 | ||
*p 포인터 역참조 | ||
++(expr) 전위 증가 연산자 | ||
--(expr) 전위 감소 연산자 | ||
3 | * 곱셈 | 왼쪽 우선 |
/ 나눗셈 | ||
% 나머지 | ||
4 | + 덧셈 | 왼쪽 우선 |
- 뺄셈 | ||
5 | << >> 쉬프트 연산자 | 왼쪽 우선 |
6 | < 미만 | 왼쪽 우선 |
<= 이하 | ||
> 초과 | ||
>= 이상 | ||
7 | == 같음 | 왼쪽 우선 |
!= 다름 | ||
8 | & 비트 AND 연산 | 왼쪽 우선 |
9 | ^ 비트 XOR 연산 | 왼쪽 우선 |
10 | | 비트 OR 연산 | 왼쪽 우선 |
11 | && 논리 AND 연산 | 왼쪽 우선 |
12 | || 논리 OR 연산 | 왼쪽 우선 |
13 | ?: 삼항자 연산 | 오른쪽 우선 |
14 | = 대입 | 오른쪽 우선 |
+= 덧셈 후 대입 | ||
-= 뺄셈 후 대입 | ||
*= 곱셈 후 대입 | ||
/= 나눗셈 후 대입 | ||
%= 나머지 연산 후 대입 | ||
<<= 왼쪽 쉬프트 연산 후 대입 | ||
>>= 오른쪽 쉬프트 연산 후 대입 | ||
&= 비트 AND 연산 후 대입 | ||
^= 비트 XOR 연산 후 대입 | ||
|= 비트 OR 연산 후 대입 | ||
15 | , 쉼표 연산 | 왼쪽 우선 |
자~ 우리가 작성한 프로그램에서 연산의 순서는 위 표에서 나와 있는 연산순위를 따르며 동일 연산순위 내에서는 연산방향을 따라서 연산이 진행됩니다. 그럼 간단하게 예를 들어서 알아볼까요?
위와 같은 간단하게 덧셈을 하는 코드가 있다고 예를 들어 보겠습니다. 여기서 가장 중요한내용은 연산을 하는 부분이겠죠? 연산을 하는 부분은 d=a+b+c로 되어 있습니다.
여기서 연산순위가 14번째인 대입연산자 =보다 덧셈연산자 +의 연산순위가 4번째로 더 높기 때문에 덧셈연산부터 해야 합니다. 그리고 덧셈연산은 왼쪽 우선이기 때문에 b+c보다 a+b가 먼저 연산됩니다. 즉, a+b의 연산이 제일 먼저 수행되고 그 연산결과값과 c가 덧셈연산이 된 후 해당 연산결과값이 d에 대입되는 순서로 진행되는 것입니다. 간단하죠?
위 표에서 보았던 연산자들 중에서 아직 처음보는 연산자들도 있겠지만 신경쓰지 않으셔도 됩니다. 앞으로 차근차근 배우면 되니까요~ 그럼 오늘은 여기까지 입니다. 감사합니다.
제 블로그를 방문해 주셔서 감사합니다.
도움이 되셨다면 공감(좋아요) 부탁드리고,
댓글은 다른분들께도 좋은 정보일 수 있으니
공개로 부탁드립니다.
여러분의 작은 정성이 좋은 포스팅을 생산하는
힘이 된답니다. :)
감사합니다.
'PROGRAMMING > C' 카테고리의 다른 글
C언어 if 문 (0) | 2022.09.15 |
---|---|
문자 데이터 활용 (문자의 입력과 출력) (0) | 2022.09.13 |
비트연산자 (0) | 2022.09.05 |
대입연산자, 산술연산자 (0) | 2022.02.23 |
변수의 출력 다음은 데이터 입력!! (0) | 2022.02.14 |
댓글