복습(C)

4강 - 연산자

mrgong-robotics 2026. 2. 24. 00:34

프로그램은 CPU가 처리하는 명령어의 집합이며,
우리가 사용하는 연산자는 컴파일 과정에서 CPU 명령어로 변환됩니다.

 따라서 연산자를 이해하는 것은 곧 컴퓨터가 데이터를 처리하는 방식을 이해하는 것과 같습니다.


피연산자와 연산자 개념

연산에는 반드시 대상이 되는 데이터가 필요합니다.
이 데이터를 피연산자(operand) 라고 합니다.

  • 피연산자 1개 → 단항 연산자
  • 피연산자 2개 → 이항 연산자
  • 피연산자 3개 → 삼항 연산자

산술 연산자 (Arithmetic Operator)

기본적인 수학 연산을 수행하는 연산자입니다.

  • + : 더하기
  • - : 빼기
  • * : 곱하기
  • / : 나누기
  • % : 나머지
 
 
int a = 10, b = 3;

a + b; // 13
a - b; // 7
a * b; // 30
a / b; // 3 (정수 나눗셈 → 몫)
a % b; // 1 (나머지)
 

정수 나눗셈 특징
정수 / 정수 = 몫만 계산 (소수 버림)

대입 연산자 (Assignment Operator)

오른쪽 값을 왼쪽 변수에 저장합니다.

 
 
int a;
a = 10;
 
 오른쪽 식의 결과 → 왼쪽 변수 저장
 

주의

  • = : 대입
  • == : 값 비교

증감 연산자 (Increment / Decrement)

변수 값을 1씩 증가 또는 감소시키는 연산자입니다.

  • ++ : 1 증가
  • -- : 1 감소
 
 
int a = 5;

a++; // 6
++a; // 7
 

✔전위 vs 후위 차이

 
 
int a = 5;

int x = ++a; // 전위 → 먼저 증가 후 사용 → x=6, a=6
int y = a++; // 후위 → 먼저 사용 후 증가 → y=6, a=7
 

 반복문에서 매우 자주 사용됩니다.

관계 연산자 (Relational Operator)

값의 크기 또는 동일 여부를 비교합니다.
결과는 참(1) 또는 거짓(0) 입니다.

  • < : 작다
  • > : 크다
  • <= : 작거나 같다
  • >= : 크거나 같다
  • == : 같다
  • != : 같지 않다
 
 
int a = 5, b = 3;

a > b; // 1
a < b; // 0
a == b; // 0
a != b; // 1
 

 조건문에서 핵심 역할

 
 
if (a > b) {
printf("a가 더 큼");
}
 

논리 연산자 (Logical Operator)

조건식을 조합하거나 반전할 때 사용합니다.

  • && : AND (둘 다 참)
  • || : OR (하나라도 참)
  • ! : NOT (참/거짓 반전)
 
 
int a = 5, b = 3;

(a > 0 && b > 0); // 1
(a > 0 || b < 0); // 1
!(a > b); // 0
 

연산 결과 처리

연산 결과를 변수에 저장하지 않으면 값은 사라집니다.

 
 
a + b; // 결과 버려짐
c = a + b; // 결과 저장
 

 따라서 연산 결과는
✔ 바로 사용하거나
✔ 변수에 저장해야 합니다.

핵심 포인트 정리

  • = 는 값 저장, == 는 값 비교
  • 정수 나눗셈 / → 몫만 계산
  • % → 나머지 계산
  • a++ (후위) → 사용 후 증가
  • ++a (전위) → 증가 후 사용
  • 관계/논리 연산 결과 → 1 또는 0

연산자 전체 요약표

종류연산자의미예시결과
산술 + 더하기 5+3 8
산술 - 빼기 5-3 2
산술 * 곱하기 5*3 15
산술 / 나누기 5/3 1
산술 % 나머지 5%3 2
대입 = 값 저장 a=5 a에 5
증감 ++ 1 증가 a++ a+1
증감 -- 1 감소 a-- a-1
관계 > 크다 5>3 1
관계 < 작다 5<3 0
관계 == 같다 5==3 0
관계 != 같지 않다 5!=3 1
논리 && AND T&&F 0
논리 || OR T||F 1
논리 ! NOT !T 0

 

C언어에는 산술·관계·논리 연산자 외에도 실무와 시스템 프로그래밍에서 자주 쓰이는 다양한 연산자가 있습니다.
특히 메모리, 자료형, 비트 처리와 관련된 연산자는 C언어의 핵심 특징과도 연결됩니다.

형 변환 연산자 (Type Cast)

형 변환 연산자는 피연산자의 값을 원하는 자료형으로 일시적으로 변환합니다.

 
 
(double)10 // 10 → 10.0
(int)3.14 // 3.14 → 3
 

변환 시 원본 변수의 자료형이나 값은 변하지 않습니다.

 
 
int a = 10;
double b = (double)a; // a는 여전히 int
 

특징

  • 단항 연산자
  • 값만 일시 변환
  • 변수 자체의 타입은 유지

sizeof 연산자

sizeof는 피연산자의 메모리 크기를 바이트 단위로 반환합니다.

 
 
sizeof(int) // 4
sizeof(double) // 8
sizeof(a) // 변수 크기
 

피연산자 대상

  • 변수
  • 상수
  • 자료형
  • 수식
 
 
int arr[10];
sizeof(arr); // 배열 전체 크기
 

활용

  • 메모리 크기 확인
  • 동적 메모리 할당
  • 구조체 크기 계산

주의
sizeof는 함수가 아니라 연산자입니다.

복합대입 연산자

연산과 대입을 동시에 수행합니다.

종류

  • +=
  • -=
  • *=
  • /=
  • %=
 
 
a += 3; // a = a + 3
b *= 2; // b = b * 2
 

특징

  • 왼쪽은 반드시 변수
  • 오른쪽 연산 후 마지막에 대입
  • 대입 연산자와 동일한 우선순위
 
 
int a = 5;
a += 2 * 3; // a = a + 6 → 11
 

콤마 연산자

여러 수식을 순서대로 실행하고 마지막 값이 결과가 됩니다.

 
 
int a;
a = (1, 2, 3); // a = 3
 

동작 방식

  • 왼쪽 → 오른쪽 순서 실행
  • 마지막 값이 결과
 
 
int x = (a=1, b=2, a+b); // x = 3
 

특징

  • 대입 연산자보다 우선순위 낮음
  • 대입과 함께 사용 시 괄호 필요

조건 연산자 (삼항 연산자)

조건에 따라 두 값 중 하나를 선택합니다.

구문

 
 
조건식 ? 참값 : 거짓값
 

예시

 
 
int max = (a > b) ? a : b;
 

동작

  • 조건 참 → 두 번째 값
  • 조건 거짓 → 세 번째 값

특징

  • 유일한 삼항 연산자
  • if문을 간단히 대체 가능

비트 연산자

정수 데이터를 비트 단위로 연산합니다.

비트 논리 연산자

  • & : AND
  • | : OR
  • ^ : XOR
  • ~ : NOT

비트 이동 연산자

  • << : 왼쪽 이동
  • : 오른쪽 이동

예시

 
 
int a = 5; // 0101
int b = 3; // 0011

a & b; // 0001 → 1
a | b; // 0111 → 7
a ^ b; // 0110 → 6
a << 1; // 1010 → 10
 

특징

  • 정수형에만 사용
  • 하드웨어/임베디드/성능 최적화에서 중요

연산자 우선순위와 결합 방향

여러 연산자가 함께 사용되면 우선순위에 따라 계산됩니다.

기본 순서

단항 > 산술 > 비트이동 > 관계 > 논리 > 삼항 > 대입 > 콤마

예시

 
 
int x = 3 + 4 * 2; // 11
 

혼동 가능 시 괄호 사용 권장

 
 
int x = (a + b) * c;
 

핵심 포인트 정리

  • 형 변환은 값만 일시 변환하며 변수 타입은 유지된다
  • sizeof는 함수가 아닌 연산자이다
  • 복합대입은 연산 후 대입된다
  • 콤마 연산자는 마지막 값이 결과이다
  • 조건 연산자는 유일한 삼항 연산자이다
  • 비트 연산자는 정수형에만 사용된다
  • 연산 순서가 헷갈리면 괄호를 사용한다

기타 연산자 요약표

종류연산자의미예시결과
형변환 (type) 자료형 변환 (double)10 10.0
sizeof sizeof 크기 반환 sizeof(int) 4
복합대입 += 더하고 대입 a+=3 a+3
복합대입 -= 빼고 대입 a-=3 a-3
복합대입 *= 곱하고 대입 a*=3 a×3
복합대입 /= 나누고 대입 a/=3 a÷3
복합대입 %= 나머지 대입 a%=3 a%3
콤마 , 순차 실행 (1,2,3) 3
조건 ?: 조건 선택 a>b?a:b 값 선택
비트 & AND 5&3 1
비트 | OR 5|3 7
비트 ^ XOR 5^3 6
비트 ~ NOT ~5 비트반전
비트이동 << 좌이동 5<<1 10
비트이동 >> 우이동 5>>1 2

본 포스팅은 『혼자 공부하는 C언어』 교재 내용을 바탕으로 개인 학습 목적으로 재구성·정리한 글입니다.
© 서현우, 한빛미디어

'복습(C)' 카테고리의 다른 글

3강 - 변수와 데이터 입력  (0) 2026.02.22
2강 - 상수와 데이터 출력  (0) 2026.02.22
1강 - 프로그램과 C언어  (0) 2026.02.22