나머지 연산자
Coddy C++ 여정의 기초 섹션에 포함된 레슨 — 74개 중 17번째.
나머지 연산자 %는 나눗셈의 나머지를 구합니다. C++에서는 다음과 같은 간단한 구문으로 사용됩니다:
result = dividend % divisor;- dividend: 나누어지는 수입니다.
- divisor: 피제수를 나누는 수입니다.
- result: 나눗셈의 나머지입니다.
예를 들어:
result = 10 % 3;여기서 10을 3으로 나눕니다. 3은 10에 세 번 들어가고 나머지는 1이 됩니다. 따라서 result는 1이 됩니다.
보통 나머지 연산(modulo)은 숫자가 짝수인지 홀수인지 확인하는 데 사용됩니다:
- 숫자가 짝수이면, 2로 나누었을 때 나머지가 0이 됩니다.
- 숫자가 홀수이면, 2로 나누었을 때 나머지가 1이 됩니다.
C++에서 부동 소수점 숫자(double)를 다룰 때, 나머지 연산자 %를 직접 사용할 수 없습니다. 대신 <cmath> 라이브러리의 fmod() 함수를 사용해야 합니다. 이 함수는 나머지 연산자와 비슷하게 작동하지만 소수점 정밀도를 유지합니다. 예를 들어:
#include <cmath>
double result = fmod(5.2, 2.0);
// 결과는 1.2입니다작동 방식은 다음과 같습니다: 2.0은 5.2에 두 번 들어가고(4.0), 나머지는 1.2입니다 (5.2 - 4.0 = 1.2).
또 다른 예시:
double result = fmod(7.8, 3.5);
// 결과는 0.8입니다나누는 수(divisor)가 피제수(dividend)보다 클 때, 결과는 피제수와 같습니다. 이는 %와 fmod() 모두에 적용됩니다.
5 % 10 = 5
3 % 7 = 3
fmod(2.5, 8.0) = 2.5왜 그럴까요? 나누는 수가 0번 들어가므로, 피제수 전체가 나머지가 됩니다.
챌린지
초급세 개의 변수 a (int), b (double), c (int)를 각각 9, 2.6, 11의 값으로 초기화하는 코드를 작성하세요.
그 후, 다음 변수들을 초기화하세요:
d (int):a를2로 나눈 나머지 값을 저장합니다.e (int):a를3으로 나눈 나머지 값을 저장합니다.f (double):b를1.5로 나눈 나머지 값을 저장합니다.g (double):b를3.9로 나눈 나머지 값을 저장합니다.h (int):c를10으로 나눈 나머지 값을 저장합니다.
결과를 확인하고 서로 다른 피제수(dividends)와 제수(divisors)가 결과에 어떤 영향을 미치는지 살펴보세요.
치트 시트
나머지 연산자 %는 나눗셈의 나머지를 구합니다:
result = dividend % divisor;예시:
result = 10 % 3; // 결과는 1입니다일반적인 사용 사례 - 숫자가 짝수인지 홀수인지 확인하기:
- 짝수:
number % 2 == 0 - 홀수:
number % 2 == 1
부동 소수점 숫자의 경우, <cmath>의 fmod()를 사용하세요:
#include <cmath>
double result = fmod(5.2, 2.0); // 결과는 1.2입니다
double result2 = fmod(7.8, 3.5); // 결과2는 0.8입니다나누는 수(divisor)가 나누어지는 수(dividend)보다 크면 결과는 나누어지는 수와 같습니다. 이는 %와 fmod() 모두에 적용됩니다.
직접 해보기
#include <iostream>
#include <cmath>
int main() {
// 아래에 코드를 입력하세요
// 아래 줄을 변경하지 마세요
std::cout << "a = " << a << std::endl;
std::cout << "b = " << b << std::endl;
std::cout << "c = " << c << std::endl;
std::cout << "d = " << d << std::endl;
std::cout << "e = " << e << std::endl;
std::cout << "f = " << f << std::endl;
std::cout << "g = " << g << std::endl;
std::cout << "h = " << h << std::endl;
return 0;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.