C++에서 모듈로 연산자 사용
-
%
연산자를 사용하여 나눗셈의 나머지를 계산합니다 -
%
연산자를 사용하여 C++에서 주어진 최대 수보다 작은 임의의 정수 생성 -
라이브러리 정의 함수 개체를 사용하여 C++에서
%
연산자 대체
이 기사에서는 C++에서 모듈로 연산자를 사용하는 방법을 소개합니다.
%
연산자를 사용하여 나눗셈의 나머지를 계산합니다
모듈로 (%
) 연산자의 표준 기능은 나눗셈의 나머지를 계산하는 것입니다. 명령문의 반환 값-x % y
는x
를y
로 나눈 후 남은 나머지를 나타냅니다. 모듈로 연산자는 두 피연산자가 정수 여야하고 제수가 0이 아니도록 정의됩니다. 다음 예제는 다른 부호있는 정수 쌍과 함께 사용되는 모듈로 연산자를 보여줍니다. printf
함수를 사용하여 콘솔에%
문자를 인쇄하려면%
를 사용해야합니다.
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<int> ivec1{24, 24, -24, -24, 24};
vector<int> ivec2{7, 8, -8, -7, -6};
for (size_t i = 0; i < ivec1.size(); ++i) {
printf("% -d %% % -d = % -d\n", ivec1[i], ivec2[i], ivec1[i] % ivec2[i]);
}
cout << endl;
return EXIT_SUCCESS;
}
출력:
24 % 7 = 3
24 % 8 = 0
-24 % -8 = 0
-24 % -7 = -3
24 % -6 = 0
%
연산자를 사용하여 C++에서 주어진 최대 수보다 작은 임의의 정수 생성
모듈로 연산자의 또 다른 사용법은 특정 정수보다 작은 숫자 만 제공하도록 난수 생성기를 제어하는 것입니다. 프로그래머는 임의의 품질 요구에 따라 난수 생성 툴킷을 선택해야하지만 두 방법을 모두%
와 결합하여 생성 된 숫자의 상한을 지정할 수 있습니다. 이 경우 모듈로 연산자를 사용하여 반환 값이 원하는 최대 값과 쌍을 이루는rand
함수를 사용합니다.
#include <ctime>
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::vector;
constexpr int MAX = 1000;
constexpr int NUMS_TO_GENERATE = 10;
int main() {
vector<int> ivec1{24, 24, -24, -24, 24};
vector<int> ivec2{7, 8, -8, -7, -6};
std::srand(std::time(nullptr));
for (int i = 0; i < NUMS_TO_GENERATE; i++) {
cout << rand() % MAX << "; ";
}
cout << endl;
cout << endl;
return EXIT_SUCCESS;
}
출력:
98; 194; 398; 190; 782; 550; 404; 557; 509; 945;
라이브러리 정의 함수 개체를 사용하여 C++에서%
연산자 대체
C++ 표준 라이브러리는 전통적인 산술, 관계형 및 논리 연산자를 나타내는 여러 클래스를 정의합니다. 이를 함수 객체라고하며std::plus<Type>
,std::modulus<Type>
등의 이름을 갖습니다.Type
은 호출 연산자의 매개 변수 유형을 지정합니다. 다음 코드 샘플은 정수 벡터에 사용되는std::modulus
함수 객체를 보여줍니다.
#include <ctime>
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<int> ivec1{24, 24, -24, -24, 24};
vector<int> ivec2{7, 8, -8, -7, -6};
std::modulus<> intMod;
int mod_of_nums = intMod(ivec1[1], ivec2[1]);
printf("%d %% %d = %d\n", ivec1[1], ivec2[1], mod_of_nums);
return EXIT_SUCCESS;
}
출력:
24 % 8 = 0
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook