1. 수식과 연산자
1) 수식 (Expression)
- 수식(expression)은 계산을 위한 피연산자(operand)와 연산자(operator)가 결합된 형태를 의미한다.
- 피연산자는 숫자나 문자를 의미하며, 실제로 계산에 사용되는 값이다.
- 숫자 하나만 존재해도 수식이 될 수 있다. 예: 5
2) 연산자 (Operator)
- 연산자는 연산의 형태에 따라 단항 연산자, 이항 연산자, 삼항 연산자로 나뉜다.
- 연산자는 두 피연산자 사이에서 특정 연산을 수행하는 기호이다.
⭕ 단항 연산자
- +, -: 숫자의 부호를 나타낸다.
- ++, --: 값을 1씩 증가(increment), 감소(decrement)시킨다.
✅ 주의: 전위형(++a)과 후위형(a++)의 차이를 꼭 이해해야 한다.
⭕ 이항 연산자
- 왼쪽과 오른쪽에 두 개의 항이 존재하며, 가장 일반적인 형태이다.
예: a + b, x * y
⭕ 삼항 연산자
- 조건 ? 참 : 거짓 형태를 가진다.
- 조건이 참이면 앞의 값, 거짓이면 뒤의 값을 선택한다.
예: a > b ? a : b는 a와 b 중 더 큰 값을 선택한다.
⚙️ 연산자 우선순위
연산자가 한 문장에 여러 개 포함될 경우, 우선순위(priority)와 연산 방향(associativity)에 따라 계산 순서가 결정된다.
| 순위 | 연산자 종류 | 설명 | 방향 |
| 1 | (), [], ->, ., ++, -- | 함수 호출, 배열 인덱스, 포인터 접근, 증감 연산 | L → R |
| 2 | ~, !, +, -, &, * | 비트 NOT, 논리 NOT, 부호, 주소 및 포인터 | R → L |
| 3 | (data type) | 형 변환(Casting) | R → L |
| 4 | *, /, % | 곱셈, 나눗셈, 나머지 | L → R |
| 5 | +, - | 덧셈, 뺄셈 | L → R |
| 6 | <<, >> | 시프트 연산 | L → R |
| 7 | <, >, <=, >= | 비교 연산 | L → R |
| 8 | ==, != | 동등 비교 | L → R |
| 9 | & | 비트 AND | L → R |
| 10 | ^ | 비트 XOR | L → R |
| 11 | | | 비트 OR | L → R |
| 12 | && | 논리 AND | L → R |
| 13 | || | 논리 OR | L → R |
| 14 | ?: | 조건(삼항) 연산자 | R → L |
| 15 | =, +=, -=, *=, /= 등 | 대입 및 복합 대입 | R → L |
| 16 | , | 콤마 연산자 | L → R |
⚠️ 주의: 우선순위가 낮은 연산자라도 괄호 ()를 사용하여 계산 순서를 명확히 해야 한다.
2. 산술 연산자와 대입 연산자
1) 산술 연산자
- 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%) 연산을 수행한다.
- 정수형을 0으로 나누면 오류가 발생하며, 이는 컴파일러가 경고할 수도 있다.
- 정수 ÷ 정수의 결과는 소수점 이하가 제거된 정수이다.
- 정수 + 실수, 실수 + 실수의 연산 결과는 실수이다.
- % 연산자는 정수형 데이터에만 사용할 수 있다.
- printf()에서 % 자체를 출력하려면 '%%'를 사용해야 한다.
❗ 초보자 주의
- 5 / 2의 결과는 2이다. 2.5가 아니다!
- 5.0 / 2는 2.5이므로, 하나라도 실수형이면 실수 결과가 나온다.
2) 대입 연산자 (Assignment Operator)
- ` = ` 연산자는 오른쪽 값을 왼쪽 변수에 저장하는 연산자이다.
- 수학의 =는 동등을 의미하지만, C 언어에서는 대입의 의미이다.
- 여러 대입을 연속으로 사용할 수 있다. 예: a = b = c = 1;
- +=, -=, *=, /=, %= 등의 복합 대입 연산자(compound assignment)는 수식을 간결하게 만든다.
✅ 단, 왼쪽에는 반드시 변수만 올 수 있다.
✅ 마무리 정리
1️⃣ 연산자는 단항, 이항, 삼항으로 구분된다.
2️⃣ 삼항 연산자는 조건 ? 참 : 거짓의 형태를 갖는다.
3️⃣ 산술 연산은 정수/실수 여부에 따라 결과가 달라진다.
4️⃣ %는 정수형에만 사용할 수 있다.
5️⃣ 대입 연산자는 오른쪽 값을 왼쪽에 저장하며, 복합 대입 연산자가 존재한다.
6️⃣ 연산자에는 우선순위와 연산 방향이 존재하므로 괄호를 적절히 활용해야 한다.
💻 예제 코드
#include <stdio.h>
int main() {
int a = 10, b = 3;
int sum, diff, mul, mod;
float div;
// 산술 연산
sum = a + b; // 덧셈
diff = a - b; // 뺄셈
mul = a * b; // 곱셈
div = (float)a / b; // 나눗셈 (형 변환 필요)
mod = a % b; // 나머지
printf("덧셈: %d\n", sum);
printf("뺄셈: %d\n", diff);
printf("곱셈: %d\n", mul);
printf("나눗셈: %.2f\n", div); // 소수 둘째 자리까지 출력
printf("나머지: %d\n", mod);
// 대입 연산자
int x = 5;
x += 2; // x = x + 2;
x *= 3; // x = x * 3;
printf("복합 대입 결과: %d\n", x);
return 0;
}
'Language > C' 카테고리의 다른 글
| 📌 Chapter 05 - 연산자 - 논리 연산자 (1) | 2025.05.19 |
|---|---|
| 📌 Chapter 05 - 연산자 - 증감 연산자 (0) | 2025.05.19 |
| 📌 Chapter 04 - 변수와 자료형 - 자료형변환 (0) | 2025.05.17 |
| 📌 Chapter 04 - 변수와 자료형 - 상수 (0) | 2025.05.17 |
| 📌 Chapter 04 - 변수와 자료형 - 변수의 사용 (0) | 2025.05.17 |