1. 산술 연산자
산술 연산자는 덧셈, 뺄셈, 곱셈, 나눗셈 등 수학적 연산을 수행하는 연산자입니다.
기본 산술 연산자
| 연산자 | 기능 | 사용 예 |
|---|---|---|
+ |
두 값을 더합니다 | 5 + 3 → 8 |
- |
왼쪽 값에서 오른쪽 값을 뺍니다 | 10 - 4 → 6 |
* |
두 값을 곱합니다 | 6 * 8 → 48 |
/ |
왼쪽 값을 오른쪽 값으로 나눕니다 | 9 / 3 → 3 |
% |
나눗셈의 나머지를 구합니다 | 9 % 2 → 1 |
💡 나머지 연산자 %
나머지 연산자는 정수 나눗셈에서만 사용 가능합니다. 홀수/짝수 판별, 배수 확인 등에 유용합니다.
나머지 연산자는 정수 나눗셈에서만 사용 가능합니다. 홀수/짝수 판별, 배수 확인 등에 유용합니다.
실습 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 && 1→11 && 0→00 && 0→0
OR (||)
1 || 1→11 || 0→10 || 0→0
NOT (!)
!1→0!0→1
실습 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):
• 후위(postfix):
5. 논리 연산자
• AND(
• OR(
• NOT(
6. 우선순위
• 산술 → 비교 → 논리 → 대입 순서
• 괄호로 우선순위 명시 가능
•
+, -, *, /, %• 정수 나눗셈은 소수점 이하 버림
2. 대입 연산자
• 기본:
=• 복합:
+=, -=, *=, /=, %=3. 비교 연산자
•
==, !=, <, >, <=, >=• 결과는 참(1) 또는 거짓(0)
4. 증감 연산자
• 전위(prefix):
++num (먼저 증가)• 후위(postfix):
num++ (나중에 증가)5. 논리 연산자
• AND(
&&): 모두 참• OR(
||): 하나라도 참• NOT(
!): 반전6. 우선순위
• 산술 → 비교 → 논리 → 대입 순서
• 괄호로 우선순위 명시 가능
PREVIOUS3. 변수와 자료형
NEXT5. 조건문