
이번 글에서는 연산자에 대해 알아보겠습니다. 연산자란 +, -와 같은 덧셈, 뺄셈 외에도 그리고에 해당하는 and 연산, or 연산 등의 논리 연산이 존재합니다. C언어에서는 어떤 다양한 연산자가 있고, 연산자들을 어떻게 표현하는 지 보도록 하겠습니다.
∨ 연산자
연산자란 값을 가지고 특정 연산을 수행하여 결과를 만들어내는 기호를 의미합니다. 예를 들어 + 연산자는 두 값을 더하여 그 합을 결과로 반환합니다. 이때 연산자의 대상이 되는 값을 피연산자라고 합니다. 예를 들어 2 + 3이라는 연산에서 + 연산자의 대상이 되는 값은 2와 3이며, 이 둘을 피연산자라고 합니다.
<그림>
C언어에서 연산자는 대략적으로 다음과 같이 나눌 수 있습니다.
| C언어 연산자 종류 | ||
| 종류 | 연산자 | 설명 |
| 산술 연산자 | + - * / % | 사칙연산 및 나머지 |
| 증감 연산자 | ++ -- | 1 증가 / 1 감소 |
| 대입 연산자 | = += -= *= /= %= | 값 저장 및 복합 연산 |
| 비교 연산자 | == != > < >= <= | 값 비교 |
| 논리 연산자 | ! && || | 논리(True, False) 연산 |
| 비트 연산자 | & | ^ ~ << >> | 비트 단위 연산 |
| 조건(삼항) 연산자 | ? : | 조건에 따라 값 선택 |
| sizeof 연산자 | sizeof | 변수/자료형 크기 반환 |
| 형 변환 연산자 | (type) | 자료형 변환 |
| 포인터 연산자 | * & | 주소/참조 관련 |
| 멤버 접근 연산자 | . -> | 구조체 멤버 접근 |
이 중에서 주요한 것들을 순서대로 알아가보도록 하겠습니다.
∨ 산술 연산자
산술 연산자는 두 값을 이용하여 사칙연산을 수행하는 연산자로, C언어에서는 +, -, *, /, %가 해당됩니다. 이는 각각 다음과 같습니다.
- + : 덧셈
- - : 뺄셈
- * : 곱셈
- / : 나눗셈
- % : 나머지 연산.
여기서 나머지 연산자 %는 나눗셈을 한 후의 나머지를 반환하는 나머지입니다. 104를 10으로 나눈 나머지는 4입니다. 100은 10으로 나눠지고 나눠지지 않는 나머지가 4
산술 연산은 피연산자의 자료형에 따라 결과가 달라지는데, 정수끼리 연산할 경우 결과도 정수로 나오며 특히 나눗셈에서는 소수점 이하가 버려집니다(예: 5 / 2 = 2). 반면 실수형이 포함되면 결과도 실수로 계산되며(예: 5.0 / 2 = 2.5), 정수와 실수가 함께 연산되는 경우에는 정수가 실수로 자동 변환되어 계산됩니다(예: 5 / 2.0 = 2.5). 또한 나머지 연산자 %는 정수형에서만 사용할 수 있으며 실수에는 사용할 수 없습니다(예: 5 % 2 = 1).
∨ 증감 연산자
증감 연산자는 변수의 값을 1 증가시키거나 1 감소시키는 연산자로, C언어에서는 ++와 --를 사용합니다. ++는 값을 1 증가시키고 --는 값을 1 감소시킵니다. 이 연산자는 주로 반복문에서 많이 사용되며, 변수를 빠르게 증가/감소시키는 용도로 활용됩니다.
증감 연산자는 위치에 따라 동작이 달라질 수 있습니다. 변수 앞에 오는 전위 연산자(++x, --x)는 해당 줄에서 바로 값이 증가/감소된 후 사용되며, 변수 뒤에 오는 후위 연산자(x++, x--)는 현재 값을 먼저 사용한 뒤 증가/감소가 이루어집니다.
예를 들어 int x = 5;일 때 ++x는 x가 먼저 6이 된 후 사용되고, x++는 5가 먼저 사용된 뒤 x가 6이 됩니다. 이 차이는 함수나 출력문에서 결과에 영향을 줄 수 있습니다.
∨ 대입 연산자, 복합 대입 연산자
대입 연산자는 변수에 값을 저장하는 연산자로, C언어에서는 = 기호를 사용합니다. 대입 연산자는 오른쪽에 있는 값을 왼쪽 변수에 저장하는 역할을 하며, 이를 “할당한다”라고도 표현합니다. 예를 들어 x = 5;는 변수 x에 값 5를 저장하는 의미입니다.
대입 연산자에서 중요한 점은 수학의 등호(=)와 의미가 다르다는 것입니다. 수학에서는 =가 좌우가 같다는 의미이지만, C언어에서는 “같다”가 아니라 “저장한다”는 의미입니다. 따라서 비교를 할 때는 == 연산자를 사용해야 합니다.
또한 대입 연산자는 여러 번 사용할 수 있으며, 새로운 값이 저장되면 기존 값은 사라지고 마지막에 저장된 값만 남습니다. 예를 들어 x = 5; x = 10;이면 최종적으로 x에는 10이 저장됩니다.
대입 연산자는 다른 연산자와 결합하여 사용할 수도 있습니다. 예를 들어 +=, -=, *=, /=, %=와 같은 복합 대입 연산자는 기존 값을 기반으로 연산한 후 결과를 다시 저장하는 방식입니다.
∨ 비교 연산자
비교 연산자는 두 값을 비교하여 그 결과를 참(true) 또는 거짓(false)으로 반환하는 연산자입니다. C언어에서는 ==, !=, >, <, >=, <=가 비교 연산자에 해당합니다.
==는 두 값이 같은지를 비교하며, 같으면 참, 다르면 거짓을 반환합니다. !=는 두 값이 다른지를 비교하는 연산자입니다. >는 왼쪽 값이 오른쪽 값보다 큰지, <는 작은지를 비교합니다. 또한 >=는 크거나 같은지, <=는 작거나 같은지를 판단합니다.
비교 연산자의 결과는 일반적으로 0 또는 1로 표현됩니다. 조건이 참이면 1, 거짓이면 0으로 처리됩니다. 예를 들어 5 > 3은 참이므로 1, 5 < 3은 거짓이므로 0이 됩니다.
비교 연산자는 조건문(if)이나 반복문(while, for)에서 매우 중요한 역할을 하며, 프로그램의 흐름을 결정하는 데 사용됩니다.
∨ 논리 연산자
논리 연산자는 여러 개의 조건을 결합하거나 조건의 참/거짓을 반대로 바꾸는 데 사용하는 연산자입니다. C언어에서는 &&, ||, !가 논리 연산자에 해당합니다.
&&는 AND 연산자로, 두 조건이 모두 참일 때만 전체 결과가 참이 됩니다. 하나라도 거짓이면 결과는 거짓이 됩니다. 예를 들어 (5 > 3) && (2 < 4)는 두 조건이 모두 참이므로 결과는 참입니다.
||는 OR 연산자로, 여러 조건 중 하나라도 참이면 전체 결과가 참이 됩니다. 예를 들어 (5 < 3) || (2 < 4)는 두 번째 조건이 참이므로 결과는 참입니다.
!는 NOT 연산자로, 참을 거짓으로, 거짓을 참으로 바꾸는 역할을 합니다. 예를 들어 !(5 > 3)은 원래 참인 조건을 반대로 바꾸므로 거짓이 됩니다.
논리 연산자는 주로 조건문(if)에서 여러 조건을 동시에 판단할 때 사용되며, 프로그램의 흐름을 세밀하게 제어하는 데 중요한 역할을 합니다.
∨ 비트 연산자
상세한 설명은 해당 글 참고
Chapter 8.5. C언어 : 비트 연산자 부연 설명. 하드웨어적 연산 비트 연산! — 검정부기 https://alittleboogie.tistory.com/96
비트 연산자는 정수를 2진수(비트) 단위로 나누어 직접 연산하는 연산자입니다.일반적인 산술 연산이 값 자체를 계산하는 것이라면, 비트 연산자는 숫자를 구성하는 0과 1의 비트를 대상으로 연산을 수행합니다.C언어에서는&, | , ^, ~, << , >> 가 비트 연산자에 해당합니다.
& 는 AND 비트 연산자로, 두 비트가 모두 1일 때만 1이 됩니다. | 는 OR 비트 연산자로, 두 비트 중 하나라도 1이면 1이 됩니다. ^ 는 XOR 연산자로, 두 비트가 서로 다를 때만 1이 됩니다. ~는 NOT 연산자로, 비트를 반전시켜 0은 1로, 1은 0으로 바꿉니다.
또한 << 는 왼쪽 시프트 연산자로 비트를 왼쪽으로 이동시키며 값이 2배씩 증가하는 효과가 있고, >> 는 오른쪽 시프트 연산자로 비트를 오른쪽으로 이동시켜 값을 절반으로 줄이는 효과가 있습니다.
비트 연산자는 일반적인 계산에서는 자주 사용되지는 않지만, 하드웨어 제어, 최적화, 데이터 압축, 플래그 처리 등 저수준 프로그래밍에서 매우 중요한 역할을 합니다.
조건 연산자는 C언어에서 유일한 삼항 연산자로, 조건에 따라 서로 다른 값을 선택하여 반환하는 연산자입니다.기호는 ? : 형태로 사용됩니다.
조건 연산자의 기본 구조는 다음과 같습니다.
조건식 ? 값1 : 값2
조건식이 참이면 값1이 선택되고, 거짓이면 값2가 선택됩니다.예를 들어 5 > 3 ? 10 : 20은 조건식 5 > 3이 참이므로 결과는 10이 됩니다.
조건 연산자는 if - else 문을 간단하게 한 줄로 표현할 수 있다는 특징이 있습니다.예를 들어 다음과 같은 if - else 문은
if (x > 0) {
y = 1;
}
else {
y = -1;
}
조건 연산자를 사용하면 아래와 같이 줄일 수 있습니다.
y = (x > 0) ? 1 : -1;
이처럼 조건 연산자는 간단한 조건 분기에서 코드의 길이를 줄이고 가독성을 높이는 데 사용됩니다.
∨ 형변환 연산자
형변환 연산자는 하나의 자료형을 다른 자료형으로 변환하는 연산자입니다.C언어에서는(type) 형태로 사용하며, 원하는 자료형을 괄호 안에 적어 값을 강제로 변환합니다.
형변환은 크게 자동 형변환과 강제 형변환(명시적 형변환)으로 나눌 수 있습니다.자동 형변환은 서로 다른 자료형이 연산될 때 컴퓨터가 자동으로 더 큰 범위의 자료형으로 변환하는 경우입니다.예를 들어 int와 float이 함께 연산되면 int가 float으로 변환되어 계산됩니다.
반면 형변환 연산자는 사용자가 직접 자료형을 지정하여 변환하는 방식입니다.예를 들어(float)5는 정수 5를 실수 5.0으로 변환합니다.또한 5 / 2는 정수 나눗셈이지만(float)5 / 2로 작성하면 5.0이 되어 결과가 2.5로 나옵니다.
형변환 연산자는 자료형의 차이로 인해 발생하는 연산 결과의 왜곡을 제어할 때 사용되며, 특히 정밀한 계산이 필요한 실수 연산에서 자주 사용됩니다.
∨ 퀴즈
∨ 정리
'지식 아카이브 > C언어' 카테고리의 다른 글
| Chapter 10. C언어 : 조건문. 프로그램의 실행 흐름의 분기. if문의 모든것. (0) | 2026.04.19 |
|---|---|
| Chapter 8.5. C언어 : 비트 연산자 부연 설명. 하드웨어적 연산 비트 연산! (0) | 2026.04.19 |
| Chapter6. C언어 : 변수의 자료형, unsigned vs signed (0) | 2026.04.15 |
| Chapter5. C언어 : 변수의 선언, 대입, 초기화, 참조. (0) | 2026.04.15 |
| Chapter4. C언어 : only 실습 모드 (0) | 2026.04.15 |
