산술 연산자
정의
- 사칙연산을 포함한 각종 산술연산을 수행하는 연산자
- arithmetic operator
- 이항 연산자 : 피연산자가 두 개인 연산자
- 단항 연산자 : 피연산자가 한 개인 연산자
종류
| 구분 | 연산자 | 명칭 | 예시 | 비고 |
|---|---|---|---|---|
| 산술 | + | 더하기 | i + 5 | |
| 산술 | - | 빼기 | i - 5 | |
| 산술 | * | 곱하기 | i * 5 | |
| 산술 | / | 나누기 | i / 5 | |
| 산술 | % | 나눗셈의 나머지 | i % 5 | 정수형에만 사용할 수 있음 |
| 산술 | +(부호) |
양수 부호 | ||
| 산술 | -(부호) |
음수 부호 | int a = -5; | |
| 산술 | ++ | 1 증가 (증감 연산자) | ++i, i++ | |
| 산술 | – | 1 감소 (증감 연산자) | –i, i– |
예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <stdio.h>
#include <stdlib.h>
int main() {
// 더하기, 빼기, 곱하기, 나누기
int i = 5;
printf("i + 5 = %d\n", i + 5);
printf("i - 5 = %d\n", i - 5);
printf("i * 5 = %d\n", i * 5);
printf("i / 5 = %d\n", i / 5);
------------------------------
>> i + 5 = 10
>> i - 5 = 0
>> i * 5 = 25
>> i / 5 = 1
// 나눗셈의 나머지
int j = 6;
printf("j %% 5 = %d\n", j % 5);
------------------------------
>> j % 5 = 1
// 양수부호 및 음수부호
int a = +1;
int b = -1;
printf("a + b = %d\n", a + b);
------------------------------
>> a + b = 0
// 증감 연산자 ++ --
int c = 10;
int d = c++;
printf("d = %d, c = %d\n", d, c);
------------------------------
>> d = 10, c = 11
int e = 10;
int f = ++e;
printf("f = %d, e = %d\n", e, f);
------------------------------
>> f = 11, e = 11
int g = 10;
int h = c--;
printf("g = %d, h = %d\n", g, h);
------------------------------
>> g = 10, h = 11
int k = 10;
int l = --e;
printf("k = %d, l = %d\n", k, l);
------------------------------
>> k = 10, l = 10
return EXIT_SUCCESS;
}
주의 사항
(1) 오버플로가 일어나지 않도록 주의
- 오버플로 : 해당 자료형이 담을 수 있는 범위를 벗어난 수를 저장하려고 할 때
- 정수형의 경우 wrap-around, 실수형은 저장된 값이 Inf 혹은 0.0이 될 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// wrap-around
short i = 32768;
printf("%d\n", i + 1);
------------------------------
>> -32767
// inf
float f = FLT_MAX;
printf("%f\n", f * 2.0f);
------------------------------
>> inf
// 0.0
float fm = FLT_MIN;
printf("%f\n", fm / 10e+10);
------------------------------
>> 0.000000
(2) 나눗셈에서 제수(분모)는 0이 아니어야 한다.
1
2
3
4
short i = 32768;
printf("%d\n", i / 0);
------------------------------
>> 0
(3) 정수형 나눗셈에서 소수점 이하(나머지)는 버려진다.
1
2
3
4
5
int a = 10;
int b = 3;
printf("a / b = %d\n", a / b);
------------------------------
>> 3
(4) 정수형과 실수형간 연산의 결과는 실수형이다.
1
2
3
4
int a =1;
printf("a * b = %f\n", a * 1.5);
------------------------------
>> 1.500000
(5) 전치 연산과 후치 연산에 주의하라
- 전치 연산 : 숫자의 증감연산이 일어난 뒤에 연산이 수행됨.
- 후치 연산 : 연산이 수행되고 나서 증감연산이 수행됨.
1
2
3
4
5
6
7
8
9
10
11
int c = 10;
int d = c++;
printf("d = %d, c = %d\n", d, c);
------------------------------
>> d = 10, c = 11
int e = 10;
int f = ++e;
printf("f = %d, e = %d\n", e, f);
------------------------------
>> f = 11, e = 11
Reference
C 프로그래밍 (김형근, 곽덕훈, 정재화 공저)
C 프로그래밍 강의 (방송통신대 - 이병래)
Comments