본문 바로가기
c언어

c언어 연산자의 우선순위와 결합 규칙 알아보기

by 개발자 L 2022. 12. 2.
반응형

c언어 연산자의 우선순위와 결합 규칙 알아보기

네 안녕하세요, 이번 포스팅에서는 c언어에서 쓰는 연산자의 우선순위와 결합 규칙에 대하여 알아보도록 하겠습니다.

우리가 수학 시간에 사칙 연산을 배웠을 때 규칙이 있듯이, 프로그래밍 언어에서 이루어지는 연산도 우선순위와 그 규칙이 존재를 합니다.

그래서 이번 시간에는 그러한 것을 알아보도록 하겠습니다.

그럼 지금부터 같이 보시죠.

 

1. 연산자의 우선 순위

연산자의 우선순위는 다음과 같습니다.

우리가 사칙연산을 할 때 쓰는 수학적 연산기호들, 그리고 괄호들이 적용되는 우선 순위는 똑같습니다.

그런데 그 외에도 여러 가지 연산자를 많이 쓰기 때문에 우선순위들이 조금 다를 수 있습니다.

그래서 제가 표로 정리를 해봤습니다.

우선순위 연산자 설명 결합성
1 ++ -- 후위 증감 연산자 ->(좌 -> 우)
() 함수 호출
[] 배열 인덱스 연산자
. 구조체 멤버 접근
-> 구조체 포인터 접근
(type){list} 복합 리터럴(C99 규칙)
2 ++ -- 전위 증감 연산자 <-(우 -> 좌)
+ - 양수, 음수 부호
! ~ 논리적인 부정, 비트 not
(type) 형변환
* 간접 참조 연산자
& 주소 추출 연산자
sizeof 크기 계산 연산자
_Alignof 정렬 요구 연산자(C11 규칙)
3 * / % 곱셈, 나눗셈, 나머지 연산자 ->(좌 -> 우)
4 + - 덧셈, 뺄셈 연산자
5 << >> 비트 이동 연산자
6 < <= 관계 연산자
> >=
7 == !=
8 & 비트 and
9 ^ 비트 xor
10 | 비트 or
11 && 논리 and
12 || 논리 or
13 ?: 삼항 조건 연산자 <-(우 -> 좌)
14 = 대입 연산자
+= -= 복합 대입 연산자
*= /= %=
<<= >>=
&= ^= |=
15 , 콤마 연산자 ->(좌 -> 우)

이렇게 보실 수 있으며,

연산 우선순위가 낮음에서 높은 순으로 콤마 -> 대입 -> 논리 -> 관계 -> 산술 -> 단항 연산자 순으로 높아집니다.

그래서 이러한 순위를 알아두면 나중에 복잡한 수식을 작성을 해야 하는 경우에 코드의 순서 혼동으로 인한 폐기를 하는 경우를 예방할 수 있습니다.

반응형

 

2. 연산자의 결합 규칙

제가 작성한 표를 보시면 '결합성'이라고 적은 란이 있을 겁니다.

이게 바로 연산자의 결합 규칙과 연관이 됩니다.

그리고 이러한 결합 규칙은 크게 두 가지입니다.

  • 왼쪽 우선 결합 규칙
  • 오른쪽 우선 결합 규칙

이렇게 있으며, 순서대로 설명을 드리겠습니다.

 

2 - 1. 왼쪽 우선 결합 규칙

왼쪽 우선 결합 규칙은 같은 우선순위를 가지는 연산자들을 왼쪽에서 오른쪽으로 연산을 수행하는 것을 말합니다.

그리고 이러한 연산자들은 문장에서 나타나는 순서대로 실행이 되며,

대다수의 이항 연산자들이 여기에 포함이 됩니다.

 

2 - 2. 오른쪽 우선 결합 규칙

오른쪽 우선 결합 규칙은 왼쪽 우선 결합 규칙과는 반대로 오른쪽에서 왼쪽으로 연산을 하는 것을 말합니다.

이러한 결합 규칙을 따르는 연산자들을 대부분의 단항 연산자들과 대입 연산자가 따릅니다.

그럼 간단한 예제를 작성하여 보여드리도록 하겠습니다.

#include <stdio.h>

int main()

{
    int x = 0, y = 0;
    int result;

    result = 2 > 3 || 6 > 7;
    printf("%d\n", result);

    result = 2 || 3 && 3 > 7;
    printf("%d\n", result);

    result = x = y = 1;
    printf("%d\n", result);

    result = - ++x + y--;
    printf("%d\n", result);

    return 0;
}

이렇게 한 번 작성을 해봤습니다.

그리고 이들은 표에 작성한 우선순위에 따라서 연산이 될 겁니다.

그럼 결과 화면을 같이 보시죠.

0
1
1
-1

이렇게 결과도 잘 나왔음을 보실 수가 있습니다.

이제 여러분들은 연산자의 우선순위와 결합 규칙을 토대로 연산을 진행하실 수 있습니다.

 

여기까지 c언어 연산자의 우선순위와 결합 규칙에 대하여 알아보았습니다.

다음 포스팅에서는 지금까지 배운 것을 토대로 여러 가지 문제들을 풀며 코딩 실력을 향상할 수 있는 시간을 가져보도록 하겠습니다.

긴 글 읽어주신 독자분들께 진심으로 감사드립니다 ~

반응형

댓글