C언어 초급 - 5장: 연산자와 표현식 (5.1 산술 연산자 (+, -, *, /, %))
2025. 2. 23. 16:45ㆍ프로그래밍 언어/C
5.1 산술 연산자 (+, -, *, /, %)
C 언어에서 산술 연산자(Arithmetic Operators)는 숫자 값을 계산하는 데 사용됩니다.
산술 연산자는 정수(Integer)와 실수(Floating-point) 연산에서 다르게 동작할 수 있으며, 특히 나머지 연산자(%)는 정수 연산에서만 사용할 수 있습니다.
1. C 언어의 산술 연산자 종류
연산자 | 설명 | 사용 예제 | 결과 |
+ | 덧셈(Addition) | a + b | 10 + 5 = 15 |
- | 뺄셈(Subtraction) | a - b | 10 - 5 = 5 |
* | 곱셈(Multiplication) | a * b | 10 * 5 = 50 |
/ | 나눗셈(Division) | a / b | 10 / 5 = 2 (정수 나눗셈) |
% | 나머지(Modulus) | a % b | 10 % 3 = 1 |
2. 정수 연산과 실수 연산의 차이
산술 연산자는 피연산자의 자료형에 따라 정수 연산과 실수 연산으로 나뉩니다.
2.1 정수 연산 (Integer Arithmetic)
- 피연산자가 모두 정수(int)일 경우, 결과도 정수(int)가 됩니다.
- 나눗셈(/) 연산 시 소수점 이하를 버림(내림) 합니다.
정수 연산 예제
#include <stdio.h>
int main() {
int a = 10, b = 3;
printf("정수 나눗셈: %d\n", a / b); // 10 / 3 → 3 (소수점 이하 버림)
return 0;
}
출력 결과
정수 나눗셈: 3
📌 정수 나눗셈은 결과가 정수이며, 소수점 이하 값은 버려짐.
2.2 실수 연산 (Floating-point Arithmetic)
- 피연산자 중 하나라도 실수(float 또는 double)이면, 결과도 실수(double)가 됩니다.
- 나눗셈(/) 연산 시 소수점 이하까지 계산됨.
실수 연산 예제
#include <stdio.h>
int main() {
float a = 10.0, b = 3.0;
printf("실수 나눗셈: %.2f\n", a / b); // 10.0 / 3.0 → 3.33
return 0;
}
출력 결과
실수 나눗셈: 3.33
📌 정수 연산과 달리, 실수 연산은 소수점 이하까지 계산됨.
3. 나머지 연산자 %의 활용
3.1 나머지 연산자(%)란?
- a % b → a를 b로 나눈 나머지 값을 반환.
- 정수형(int)에서만 사용 가능 (float, double에는 사용 불가능).
나머지 연산 예제
#include <stdio.h>
int main() {
int a = 10, b = 3;
printf("10 %% 3 = %d\n", a % b); // 10을 3으로 나눈 나머지
return 0;
}
출력 결과
10 % 3 = 1
📌 10을 3으로 나누면 몫이 3, 나머지가 1이므로 결과는 1.
3.2 float에서는 % 사용 불가
나머지 연산자는 정수형(int)에서만 사용 가능하며, 실수형(float, double)에서는 사용할 수 없습니다.
#include <stdio.h>
int main() {
float a = 10.0, b = 3.0;
printf("%.2f %% %.2f = %.2f\n", a, b, a % b); // 오류 발생
return 0;
}
오류 메시지
error: invalid operands to binary % (have ‘float’ and ‘float’)
📌 해결 방법
- 실수 나머지를 구하려면 fmod() 함수를 사용해야 합니다. (#include <math.h> 필요)
#include <stdio.h>
#include <math.h>
int main() {
double a = 10.5, b = 3.2;
printf("실수 나머지: %.2f\n", fmod(a, b)); // fmod(10.5, 3.2) 사용
return 0;
}
출력 결과
실수 나머지: 0.90
📌 fmod(a, b)는 실수 연산에서 나머지를 구할 때 사용.
4. 나머지 연산자의 활용 예제
4.1 짝수 / 홀수 판별
나머지 연산자를 활용하면 짝수/홀수를 판별할 수 있습니다.
#include <stdio.h>
int main() {
int num;
printf("정수를 입력하세요: ");
scanf("%d", &num);
if (num % 2 == 0) {
printf("%d는 짝수입니다.\n", num);
} else {
printf("%d는 홀수입니다.\n", num);
}
return 0;
}
실행 예시
정수를 입력하세요: 7
7는 홀수입니다.
📌 짝수: num % 2 == 0 / 홀수: num % 2 == 1
4.2 요일 계산 (요일 구하기)
나머지 연산자를 사용하여 요일을 계산할 수 있습니다.
예를 들어, 7일을 기준으로 반복되는 패턴에서 특정 요일을 구할 때 활용됩니다.
#include <stdio.h>
int main() {
int days;
char *week[] = {"일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"};
printf("몇 일 후인지 입력하세요: ");
scanf("%d", &days);
printf("%d일 후는 %s입니다.\n", days, week[days % 7]);
return 0;
}
실행 예시
몇 일 후인지 입력하세요: 10
10일 후는 수요일입니다.
📌 7일 단위로 반복되는 패턴(days % 7)을 활용하여 요일 계산.
5. 정리
연산자 | 설명 | 사용 예제 |
+ | 덧셈 | a + b |
- | 뺄셈 | a - b |
* | 곱셈 | a * b |
/ | 나눗셈 (정수: 몫, 실수: 나누기) | a / b |
% | 나머지 연산 (정수만 가능) | a % b |
📌 주의할 점
- 정수 연산과 실수 연산의 차이를 이해해야 함 (/ 연산 시 int는 소수점 이하 버림).
- 나머지 연산자 %는 정수형에서만 사용 가능 (float 사용 시 fmod() 활용).
- % 연산자를 활용하면 짝수/홀수 판별, 요일 계산 등 다양한 로직을 구현 가능.
'프로그래밍 언어 > C' 카테고리의 다른 글
C언어 초급 - 5장: 연산자와 표현식 (5.3 관계 연산자 (==, !=, >, <, >=, <=)) (0) | 2025.02.23 |
---|---|
C언어 초급 - 5장: 연산자와 표현식 (5.2 대입 연산자 (=)) (0) | 2025.02.23 |
C언어 초급 - 4장: 입출력 함수 (4.3 putchar()와 puts()) (0) | 2025.02.23 |
C언어 초급 - 4장: 입출력 함수 (4.2 gets()와 fgets() 비교) (0) | 2025.02.23 |
C언어 초급 - 4장: 입출력 함수 (4.1 입력 함수 scanf()) (0) | 2025.02.23 |