프로그램에서는 정의된 변수와 상수에 어떤 연산을 수행하기 위해서 연산자가 제공됩니다.
그중에서 C언어는 다른 언어에 비해서 매우 다양한 연산자를 제공하고 있으니 연산자의 종류를 알아보고 각 연산자의 개념도 살펴보겠습니다.
연산자의 종류 & 우선순위
C언어는 연산자의 수만 봐도 장인정신으로 만들어졌다는 것이 느껴집니다. 상당히 많기 때문입니다.
그러나 문제가 없지는 않은데 애매하게 낯선 느낌이 든다는 겁니다. 애매한 문자 배열이 연산자 역할을 수행하기 때문인데요. 익숙해지면 다른 언어는 쓰고 싶지 않다는 매력이 있습니다. 마치 고약한 냄새라도 맡다 보면 자꾸 맡고 싶어 지는 현상과 비슷합니다. 얼른 익숙해지시길 바라면서 종류를 보겠습니다.
연산자의 종류 | ||
관계 연산자 | 보다 작다 보다 크다 작거나 같다 크거나 같다 |
< > <= >= |
상등 연산자 | 같다 다르다 |
== != |
논리 연산자 | 논리부정 논리곱 논리합 |
! && \\ |
산술 연산자 | 덧셈, 뺄셈 곱셈, 나눗셈 부호 나머지 |
+, - *, / +, - % |
이 연산자들은 C언어 말고도 많이 사용됩니다.
그리고 다른 연산자들처럼 관계, 상등, 논리 연산자들은 이들이 사용된 수식들의 연산 순서와 결합순서를 결정하는 규칙이 정해져 있습니다.
이 규칙들은 연산자를 이용하여 결괏값을 얻는 것이 목적이라면 잘 알고 있어야 합니다. 그래서 우선순위가 필요한 것입니다.
앞선 연산자들의 관계를 알 수 있도록 너무 상세한 부분은 생략하고 나타나겠습니다.
연산자 종류 | 순위 | 연산자들 | 결합순서 |
산술 연산자 | 1 2 3 |
+, -, ++, -- * / % +, - |
오른쪽에서 왼쪽 왼쪽에서 오른쪽 왼쪽에서 오른쪽 |
관계 연산자 | 4 | <, <=, >, >= | 왼쪽에서 오른쪽 |
상등 연산자 | 5 | ==, != | 왼쪽에서 오른쪽 |
논리 연산자 | 6 | &&, \\ | 왼쪽에서 오른쪽 |
C 컴파일러는 산술 연산자를 가장 먼저, 이후로는 관계 연산자, 상등 연산자, 논리 연산자 순으로 처리합니다.
여기서 혼자 알고 있기 아까운 팁이 있으니 공유하겠습니다. 학부시절 교수님께서 전수해주신 기적의 암기법입니다.
- 일단 산술 연산자가 무조건 1순위
- 연산자가 사윗감이라고 생각하라, 그러면 고개를 들어 관상을 봐야 하니 관상론이 필요하다
- 관상론의 앞글자를 따서 외우면 된다
- 즉 순서대로 관 = 관계, 상 = 상등, 론 = 논리
모든 기적의 암기법의 공통점은 처음 들었을 때 콧방귀가 나온다는 겁니다.
지금 비웃었다면 성공입니다. 이제 잊히지 않을 것이기 때문입니다.
산술 연산자
- 사칙연산
C언어에서도 일반 산술 연산자는 덧셈, 뺄셈, 곱셈, 나눗셈입니다.
또한 두 개의 정수형의 나눗셈에서 나머지를 구하는 연산자로 %가 있기도 합니다.
이 연산자들은 두 개의 피연산자를 이용하는 산술 연산자입니다. 반대로 음수 연산자와 양수 연산자는 피연산자 한 개에 적용되어서 부호를 바꿔줍니다.
- 증가 연산자와 감소 연산자
++와 --연산자는 C언어를 사용하면 어디서나 볼 수 있는 유명한 연산자입니다.
이들도 산술 연산자인데 상당히 익숙할 겁니다.
왜냐하면 엄청 많이 쓰이기 때문이죠. 사실상 사용하는 방법을 알고나면 안 쓰는 게 더 이상합니다.
이런 식으로 말을 풀어가면 눈치채셨겠지만 간단하게라도 꼭 알고 넘어가야 합니다.
++ = 해당 피연산자의 값을 하나 증가시킨다.
-- = 해당 피연산자의 값을 하나 감소시킨다.
대입 연산자
C 언어에서 사용되는 대입 연산자는 순수하게 값을 변수에 할당시키는 단순 대입 연산자와 혼합된 형태의 연산자로 나눠집니다.
두 형태의 대입 연산자는 역할은 같지만 쓰임새가 다르다는 특징이 있습니다.
- 단순 대입 연산자
단순 대입 연산자는 어떤 새로운 값을 변수에 대입해주는 연산자입니다.
variable = 수식(expression) |
이련 형태로 볼 수 있습니다.
이 연산자의 역할을 살펴보면 단순 대입 연산자 우측 부분에 있는 수식을 먼저 계산한 다음에 그 값을 왼쪽 변수에 대입시켜줍니다.
만약 수식이 산술식일 경우 대입이 이뤄지기 전에 결괏값이 좌측 변수의 형태에 맞게 바꿔집니다.
- 혼합 대입 연산자
혼합 대입 연산자는 단순 대입 연산자와 우선순위 / 결합 순서가 같습니다.
가령 혼합 대입 연산자를 op=라고 가정할 경우에 아래 둘은 같은 의미가 됩니다.
variable op = 수식 |
variable = variable op (수식) |
두 번째 수식에서 자세히 봐야 하는 부분은 수식을 괄호로 묶었다는 점에 있습니다. 그래서 op의 연산자가 실행되기 전에 먼저 수식을 계산해야 하는 것입니다.
관계 연산자 & 상등 연산자
- 관계 연산자
관계 연산자는 4가지입니다.
< , > , <= , >= |
이들은 피연산자로 수식을 취하면서 결괏값은 정수형인 0이나 1을 가집니다.
- 상등 연산자
상등 연산자는 두 개의 수식에서 작용해서 0이나 1의 값을 만드는 이형 연산자입니다.
상등연산자 | 기능 |
a == b a! = b |
수식 a와 b가 서로 같으면 참 수식 a와 b가 서로 다르면 참 |
무슨 말인지 표로 정리해봤습니다. 이해되실 거라고 믿습니다.
논리 연산자
논리 연산자! 는 단항입니다.
그밖에 &&와 \\은 두 개의 피연산자를 취합니다.
논리 연산자도 수식에 적용되면 0이나 1의 값을 반환합니다.
(!)은 논리 부정 연산자로 자료형이나 포인터형에 사용 가능합니다. 그래서 수식의 값이 0이라면 논리 부정 적용 시 1이 되고 반대로 0이 아닌 값을 가지고 있을 때 이 연산자를 사용하면 0이 됩니다.
!수식 |
사용법은 이렇게 간다합니다.
'IT > C 언어' 카테고리의 다른 글
C언어 기억 클래스의 종류 4가지 (0) | 2020.08.21 |
---|---|
C언어 입출력 함수 - 버퍼드 입력, 버퍼되지 않는 입력 알아보기 (0) | 2020.08.19 |
C언어 - 함수의 정의와 함수 작성방법 (0) | 2020.08.14 |
C언어 변수의 정의와 종류 알아보기 (0) | 2020.08.13 |
C 언어의 고유한 10가지 특징 (0) | 2020.08.07 |
댓글