본문 바로가기
Programming

C 연산자

by 나무수피아는 지식의 가지를 뻗어가는 공간입니다. 2025. 8. 9.
반응형

연산자

C 언어에서 연산자(Operator)는 변수나 상수에 대해 산술, 비교, 논리, 대입, 비트 등의 연산을 수행하는 기호입니다. 프로그램이 조건을 판단하거나 계산을 수행하는 데 있어 핵심적인 역할을 합니다. 각 연산자는 특정한 용도와 우선순위를 가지며, 다양한 조합을 통해 복잡한 로직을 구현할 수 있습니다.

산술 연산자

산술 연산자는 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 등의 기본적인 수학 연산을 수행할 때 사용됩니다. C 언어에서는 정수형(int), 실수형(float, double) 간의 산술 연산을 지원합니다.

  • +: 덧셈
  • -: 뺄셈
  • *: 곱셈
  • /: 나눗셈
  • %: 나머지(정수형에만 사용 가능)
int a = 10, b = 4;
int sum = a + b;        // 14
int diff = a - b;       // 6
int mul = a * b;        // 40
int div = a / b;        // 2
int mod = a % b;        // 2
    

주의: 정수형 나눗셈은 소수점 이하를 버립니다. 나머지 연산자는 실수형에는 사용할 수 없습니다.

관계 연산자

관계 연산자는 두 값을 비교하여 true(1) 또는 false(0)의 결과를 반환합니다. 조건문(if, while 등)에서 자주 사용됩니다.

  • ==: 같다
  • !=: 같지 않다
  • >: 크다
  • <: 작다
  • >=: 크거나 같다
  • <=: 작거나 같다
int x = 5, y = 10;
if (x != y) {
    printf("x와 y는 다릅니다.\n");
}
    

비교 결과는 항상 정수형 1(참) 또는 0(거짓)으로 반환되며, 논리 연산자와 함께 조건문에서 많이 사용됩니다.

논리 연산자

논리 연산자는 여러 조건을 결합하거나 조건의 참/거짓을 뒤집는 데 사용됩니다.

  • &&: 논리 AND (두 조건 모두 참이면 참)
  • ||: 논리 OR (하나라도 참이면 참)
  • !: 논리 NOT (참을 거짓으로, 거짓을 참으로)
int a = 1, b = 0;
if (a || b) {
    printf("하나 이상 참입니다.\n");
}
    

논리 연산자는 조건문, 반복문에서 필수적으로 사용되며, 복합 조건식을 표현할 때 유용합니다.

대입 연산자

대입 연산자는 변수에 값을 저장하는 데 사용됩니다. 기본적인 대입 외에도, 기존 값을 기반으로 경신하는 복합 대입 연산자도 제공됩니다.

  • =: 대입
  • +=: 덧셈 후 대입
  • -=: 뺄셈 후 대입
  • *=: 곱셈 후 대입
  • /=: 나눗셈 후 대입
  • %=: 나머지 후 대입
int a = 10;
a *= 2; // a = a * 2; 결과: 20
    

복합 대입 연산자는 코드의 가독성과 효율성을 높이는 데 유리합니다.

비트 연산자

비트 연산자는 이진수 수준에서 연산을 수행합니다. 하드웨어 제어, 플래그 조작 등 시스템 프로그래밍에서 많이 사용됩니다.

  • &: 비트 AND
  • |: 비트 OR
  • ^: 비트 XOR
  • ~: 비트 NOT
  • <<: 왼쪽 시프트
  • >>: 오른쪽 시프트
unsigned char val = 0b00001111;
unsigned char result = val << 2; // 0b00111100
    

비트 연산자는 메모리를 절약하거나 빠른 계산이 필요한 경우에 활용됩니다.

연산자 우선순위

C 언어는 여러 연산자가 혼합되어 있을 때 어떤 순서로 계산할지를 결정하는 연산자 우선순위를 정의합니다. 우선순위가 높을수록 먼저 계산됩니다. 또한 결합 방향(Associativity)도 중요한데, 왼쪽에서 오른쪽(Left-to-Right), 또는 그 반대로 계산되는지를 나타냅니다.

  • 1순위: () 괄호, ++/-- 후위
  • 2순위: +/- 단항, ! 부정, ~ 비트 NOT
  • 3순위: *, /, %
  • 4순위: +, - (이항)
  • 5순위: 관계 연산자 <, >, <=, >=
  • 6순위: ==, !=
  • 7순위: 비트 연산자 &, |, ^
  • 8순위: 논리 연산자 &&, ||
  • 9순위: 대입 연산자 =, += 등 (오른쪽에서 왼쪽)
int a = 10, b = 5, c = 2;
int result = a + b * c;  // 곱셈이 먼저 수행됨: 10 + (5 * 2) = 20
    

복잡한 수식일수록 괄호 ()를 적극 활용하여 의도를 명확히 하는 것이 좋습니다. 연산자 우선순위를 숙지하면 버그를 줄이고 정확한 연산을 구현할 수 있습니다.

반응형

'Programming' 카테고리의 다른 글

C 동적 메모리 할당  (80) 2025.08.11
C 제어문  (67) 2025.08.10
C 변수와 자료형  (57) 2025.08.08
C 기본 문법  (43) 2025.08.07
C 역사와 특징  (57) 2025.08.06