어제에 이어서 오늘도 C언어에 대해서 공부해 보자 오늘은 연산자에 대한 내용이다. 연산자는 흔히 우리가 수학에서 사용하는 사칙연산과 같은 +, -, *, / 와 같은 사칙연산과 고등교육기관의 수학을 배웠다면 들어봤을 법한 논리연산(집합으로 치면 교집합, 합집합과 같은)등이 있고 C언어도 마찬가지로 다양한 연산자가 있다. 일단 연산자(Operator)와 피연산자(Operand)를 알아야 한다. 연산자는 앞서 설명한 덧셈(+), 뺄셈(-)과 같은 기호를 말하며 피연산자는 5 + 2에서의 5와 2처럼 연산이 되는 대상을 뜻하는 의미이다. 정해진 연산자와 피연산자를 통해서 코드를 작성하면 컴퓨터가 결과를 출력하는데 우리가 덧셈보다는 곱셈이 먼저, 괄호가 있다면 괄호 안의 연산을 먼저 해야 한다고 배웠듯 C언어에서의 연산자 또한 우선순위가 있고 그는 다음과 같다.

요컨대 우리가 쓰는 연산과 비슷하면서도 다른 C언어에서의 연산에 익숙해질 필요가 있다. 이는 다양한 규칙을 먼저 살펴보고 예제를 풀면서 차근차근 익숙해져 보도록 하자.
1. 산술 연산자
산술 연산자는 사칙연산과 더불어 나머지 연산자(%)가 있다 %는 나눗셈을 실행하고 나머지를 구하는 연산자이다.
2. 정수 피연산자와 실수 피연산자
간단하게 정수끼리의 연산은 정수의 결과를 실수끼리의 연산은 실수의 결과를 출력한다 또한 C언어에서는 float 자료형의 나머지 연산은 불가능하다.
3. 복합 대입 연산자
산술 연산과 대입 연산이 함께 계산되는 연산자이다.
4. 값(Value), 식(Expression), 문(Statement)
값은 리터럴, 식은 피연산자와 연산자로 이루어져 값으로 귀결되는 것들, 문은 컴퓨터가 수행할 명령어이다. 산술 연산만 한다면 식이고, 복합 대입 연산을 한다면 식이자 문이다. 식만으로는 프로그램의 수행에 있어서 전혀 영향을 주지 않으며 문이 있어야 비로소 그 의미를 갖게 된다 즉 프로그램은 결국 문들의 합이라고 볼 수 있다.
자 그럼 예제를 풀어보자

간단하게 순서를 보자 num을 3이라고 선언하고 십진수의 형태로 5 < num < 10의 값을 출력하도록 하고 있다. <, > 는 비교 연산자로서 피연산자의 크기를 비교하는 연산자이고 결과는 true(0이 아닌 모든 수), false(=0)로 나오게 된다. 그럼 num=3이므로 결괏값은 false인 0이 나올까? 결과를 한번 보자

true를 의미하는 1이 나왔다 왜일까? 지난시간에 컴퓨터는 사람과 달리 주어진 대로 입력한다고 배웠다. 그리고 우리는 방금 연산자의 우선순위가 있다고 배웠다 위의 표에서 비교연산자의 우선순위와 연산 방향을 보도록 하자.

자 그러면 5 < num < 10은 어떻게 연산되는걸까? 좌로부터 우로 연산이 진행되면서 순서대로 연산이 진행되기에 5 < num이 먼저 진행될 것이다. num=3 이므로 값은 false에 해당하는 0이 출력될 것이다. 그러면 남은 연산은 0 < 10이 되어 true에 해당하는 1이 출력되게 된 것이다. 우리가 최초에 원하는 올바른 값을 출력하기 위해선 논리연산을 그중에서도 논리곱을 이용하여 식을 표현해야 우리가 원하는 연산 결과가 출력될 것이다. 그 예제이다.


나는 논리곱 &&을 이용해서 한번 코딩을 해보았다 과연 결과는 어떨까?

앞서 우리는 정수의 연산은 정수가 실수의 연산은 실수가 출력된다고 했다 그러면 정수의 연산에서 실수가 출력되게 하려면 어떻게 해야할까? 이때 사용하는 것이 형변환 연산자(Type-cast Operator)이다. 말 그대로 자료형을 바꿔주는 연산자로서 예컨대
5/2는 정수끼리의 연산으로 몫인 2가 출력되고 끝이다 하지만 우리는 이것이 2.5라는 실수라는 것을 이미 알고 있다. 2.5가 출력되게 하기 위해서는 (float) 5 / 2;처럼 작성해야 한다 해당 연산의 결과는 5.0f / 2 == 2.5f로 나오게 된다. 다음 예제를 보자


이를 구현하기 위해 삼항연산자를 사용해 보았다 삼항 연산자는 앞의 식이 참이라면 : 앞의 값을, 거짓이라면 : 뒤의 값을 결과로 내놓는다. 한마디로 if-else와 같은 기능이라 생각하면 된다 그 뜻대로 만약 num1이 num2보다 작으면 num2를 아니라면 num1을 출력하도록 해서 더 큰 값이 출력되도록 해보았다 과연 결과는 어떨까?

정상적으로 제일 큰 5 값이 출력되는 것을 볼 수 있다. 다음 예제도 한번 보자

비트 논리 연산자를 num1, num2 값에 각각 적용해서 출력하라고 한다 비트 논리 연산자는 다음과 같다.
1. 비트 논리 곱 연산자 : &
2. 비트 논리 합 연산자 : |
3. 비트 논리 반전 연산자 : - (전체 비트를 반전)
4. 비트 논리 베타합 연산자 : ^ (비트별로 1의 개수가 홀수개면 그 결과는 1, 짝수개면 0)
이를 이용하여 코드를 작성해 보자.


마지막 예제도 한번 보자

sizeof 연산자에 관한 내용이다 sizeof는 단항 피연산자를 가지며 피연산자의 자료형 크기를 바이트 단위로 반환한다고 한다 int형의 자료형은 4바이트의 크기를 가지기 때문에 다음과 같이 코드를 작성하면
num1과 num2의 자료형은 int이고 그의 합 또한 int의 형식으로 나오기에 4의 결과가 나올 것이다.


오늘은 다양한 C언어의 연산자를 배울 수 있었다 아직은 오류가 자주 발생하고 결과를 예측하기 어려운 부분도 존재한다 좀 더 갈고닦아 c언어를 마스터할 수 있도록 해보자
'unreal 5기' 카테고리의 다른 글
| 250818 언리얼엔진 본캠프 10일차 포인터 (1) (1) | 2025.08.18 |
|---|---|
| 250814 언리얼엔진 본캠프 9일차 반복문 (4) | 2025.08.14 |
| 250812 언리얼엔진 본캠프 7일차 C언어를 배워보자 (5) | 2025.08.12 |
| 250811 언리얼엔진 본캠프 6일차 캐릭터 카메라를 다뤄보자! (4) | 2025.08.11 |
| 250808 언리얼엔진 본캠프 5일차 TIL 캐릭터 애니메이션을 적용해보자 with Game Animation Sample (2) (4) | 2025.08.08 |