4. 연산자

header


1. 산술 연산자

산술 연산자는 덧셈, 뺄셈, 곱셈, 나눗셈 등 수학적 연산을 수행하는 연산자입니다.

기본 산술 연산자

연산자 기능 사용 예
+ 두 값을 더합니다 5 + 38
- 왼쪽 값에서 오른쪽 값을 뺍니다 10 - 46
* 두 값을 곱합니다 6 * 848
/ 왼쪽 값을 오른쪽 값으로 나눕니다 9 / 33
% 나눗셈의 나머지를 구합니다 9 % 21
💡 나머지 연산자 %
나머지 연산자는 정수 나눗셈에서만 사용 가능합니다. 홀수/짝수 판별, 배수 확인 등에 유용합니다.

실습 1

다음 코드를 실행해보세요:

#include <stdio.h>

int main() {
    int num1 = 7, num2 = 3;

    printf("%d + %d = %d\n", num1, num2, num1 + num2);
    printf("%d - %d = %d\n", num1, num2, num1 - num2);
    printf("%d * %d = %d\n", num1, num2, num1 * num2);
    printf("%d / %d = %d\n", num1, num2, num1 / num2);
    printf("%d %% %d = %d\n", num1, num2, num1 % num2);

    return 0;
}
실행 결과 보기
7 + 3 = 10
7 - 3 = 4
7 * 3 = 21
7 / 3 = 2
7 % 3 = 1
  • 정수 나눗셈: 7 / 3 = 2 (소수점 이하 버림)
  • 나머지: 7을 3으로 나눈 나머지는 1

연산 결과의 자료형

산술 연산의 결과는 두 피연산자의 자료형에 따라 결정됩니다.

피연산자 자료형 결과 자료형
int + int int
int + float float
double + int double
char + char int
int result1 = 7 / 3;      // 2 (정수 나눗셈)
double result2 = 7 / 3;   // 2.0 (여전히 정수 나눗셈 후 double로 변환)
double result3 = 7.0 / 3; // 2.333... (실수 나눗셈)
⚠️ 정수 나눗셈 주의
정수끼리 나누면 결과도 정수입니다. 실수 결과를 얻으려면 최소 하나를 실수로 만드세요.

2. 대입 연산자

대입 연산자는 값을 변수에 저장하는 연산자입니다.

기본 대입 연산자

int num = 10;   // 변수 num에 10을 대입

복합 대입 연산자

연산자 사용 예 의미
+= num += 3 num = num + 3
-= num -= 5 num = num - 5
*= num *= 7 num = num * 7
/= num /= 9 num = num / 9
%= num %= 2 num = num % 2

실습 2

#include <stdio.h>

int main() {
    int num1 = 10, num2 = 20;

    num1 += 5;   // num1 = num1 + 5;
    num2 *= 2;   // num2 = num2 * 2;

    printf("num1 = %d\n", num1);  // 15
    printf("num2 = %d\n", num2);  // 40

    return 0;
}

3. 비교 연산자

비교 연산자는 두 값을 비교하여 참(1) 또는 거짓(0)을 반환합니다.

비교 연산자 종류

연산자 의미 사용 예
== 같은가? a == b
!= 다른가? a != b
< 작은가? a < b
> 큰가? a > b
<= 작거나 같은가? a <= b
>= 크거나 같은가? a >= b
⚠️ 주의
대입 연산자 =와 비교 연산자 ==를 혼동하지 마세요!
if (num = 5) ❌ 대입
if (num == 5) ✅ 비교

실습 3

#include <stdio.h>

int main() {
    int a = 10, b = 20;

    printf("a == b : %d\n", a == b);  // 0 (거짓)
    printf("a != b : %d\n", a != b);  // 1 (참)
    printf("a < b  : %d\n", a < b);   // 1 (참)
    printf("a > b  : %d\n", a > b);   // 0 (거짓)

    return 0;
}

4. 증감 연산자

증감 연산자는 변수의 값을 1만큼 증가 또는 감소시킵니다.

증감 연산자 종류

연산자 의미 사용 예
++ 1 증가 num++, ++num
-- 1 감소 num--, --num

전위와 후위의 차이

전위(Prefix): 먼저 증가/감소 후 사용

int num = 5;
printf("%d\n", ++num);  // 6 출력 (먼저 증가)

후위(Postfix): 먼저 사용 후 증가/감소

int num = 5;
printf("%d\n", num++);  // 5 출력 (나중에 증가)
printf("%d\n", num);    // 6 출력

실습 4

실습 1

다음 코드의 실행 결과는?

연산자
전위는 먼저 증가, 후위는 나중에 증가합니다.
#include <stdio.h>

int main() {
    int a = 10;
    int b = ++a;
    int c = a++;

    printf("%d, %d, %d", a, b, c);

    return 0;
}

5. 논리 연산자

논리 연산자는 참(1)과 거짓(0)을 다루는 연산자입니다.

논리 연산자 종류

연산자 의미 설명
&& AND 모두 참이면 참
|| OR 하나라도 참이면 참
! NOT 참↔거짓 반전

진리표

AND (&&)

  • 1 && 11
  • 1 && 00
  • 0 && 00

OR (||)

  • 1 || 11
  • 1 || 01
  • 0 || 00

NOT (!)

  • !10
  • !01

실습 5

#include <stdio.h>

int main() {
    int age = 20;
    int score = 85;

    // AND: 나이가 18 이상이고 점수가 80 이상
    if (age >= 18 && score >= 80) {
        printf("합격!\n");
    }

    // OR: 나이가 60 이상이거나 학생
    if (age >= 60 || score >= 90) {
        printf("할인 대상\n");
    }

    // NOT: 성인이 아님
    if (!(age >= 18)) {
        printf("미성년자\n");
    }

    return 0;
}

6. 삼항 조건 연산자

삼항 조건 연산자는 조건에 따라 다른 값을 반환하는 연산자입니다.

기본 형태

조건 ? 참일__ : 거짓일__

사용 예

int num = 10;
int result = (num > 5) ? 100 : 200;  // result = 100

// 절댓값 구하기
int value = -15;
int absolute = (value >= 0) ? value : -value;  // absolute = 15

실습 6

실습 2

다음 코드의 실행 결과는?

연산자
a(15)가 b(20)보다 크지 않으므로 b가 선택됩니다.
#include <stdio.h>

int main() {
    int a = 15, b = 20;
    int max = (a > b) ? a : b;

    printf("최댓값: %d", max);

    return 0;
}

7. 연산자 우선순위

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

주요 연산자 우선순위

우선순위 연산자 의미 결합 방향
1 ++, -- (전위) 증감
2 ! 논리 NOT
3 *, /, % 곱셈, 나눗셈
4 +, - 덧셈, 뺄셈
5 <, >, <=, >= 비교
6 ==, != 동등
7 && 논리 AND
8 || 논리 OR
9 ?: 삼항 연산자
10 =, +=, -= 대입

연산 순서 예제

int result = 3 + 4 * 5;  // 23 (곱셈 먼저)
// 4 * 5 = 20
// 3 + 20 = 23

int value = 10 > 5 && 20 < 30;  // 1 (참)
// 10 > 5 = 1 (참)
// 20 < 30 = 1 (참)
// 1 && 1 = 1
💡 팁
복잡한 연산식에서는 괄호 ()를 사용하면 가독성이 높아지고 의도가 명확해집니다.

8. 종합 실습

문제 1 - 나머지 연산 (기초)

문제 1

17 % 5의 결과는?

연산자
17을 5로 나눈 나머지를 구하세요.

문제 2 - 증감 연산자 (중급)

문제 2

다음 코드의 실행 결과는?

연산자
전위 ++x는 먼저 증가(6), 그 다음 x++(6 사용 후 7로 증가)
#include <stdio.h>

int main() {
    int x = 5;
    int y = ++x + x++;

    printf("%d, %d", x, y);

    return 0;
}

문제 3 - 논리 연산 (중급)

문제 3

다음 조건의 결과는 참(1) 또는 거짓(0)?

int a = 10, b = 20, c = 30;
(a < b) && (b < c) && (a + b > c)
연산자
각 조건을 순서대로 확인: (10 < 20) && (20 < 30) && (30 > 30)

핵심 요약

1. 산술 연산자
+, -, *, /, %
• 정수 나눗셈은 소수점 이하 버림

2. 대입 연산자
• 기본: =
• 복합: +=, -=, *=, /=, %=

3. 비교 연산자
==, !=, <, >, <=, >=
• 결과는 참(1) 또는 거짓(0)

4. 증감 연산자
• 전위(prefix): ++num (먼저 증가)
• 후위(postfix): num++ (나중에 증가)

5. 논리 연산자
• AND(&&): 모두 참
• OR(||): 하나라도 참
• NOT(!): 반전

6. 우선순위
• 산술 → 비교 → 논리 → 대입 순서
• 괄호로 우선순위 명시 가능