>백엔드 개발 >C++ >모듈로 연산자는 음수를 어떻게 처리합니까?

모듈로 연산자는 음수를 어떻게 처리합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-23 03:10:13571검색

How Does the Modulo Operator Handle Negative Numbers?

음수 값을 사용한 모듈로 연산자의 동작 이해

모듈로 연산자를 음수 피연산자와 함께 사용할 경우 다른 결과가 나오는 것으로 알려져 있습니다. 이를 자세히 알아보기 위해 다음 작업을 고려해 보겠습니다.

std::cout << (-7 % 3) << std::endl; // Output: -1
std::cout << (7 % -3) << std::endl; // Output: 1

ISO 표준에 따른 이론적 근거

ISO14882:2011(e) 5.6-4에 따르면, 모듈로 연산자(%)는 첫 번째 표현식을 두 번째 표현식으로 나눈 나머지를 산출합니다. 그러나 우리의 경우와 같은 정수 피연산자의 경우 나누기 연산자(/)는 소수 부분을 모두 버리고 정수 나누기를 수행합니다.

수학적 분석

계산을 분석해 보겠습니다. 명확성을 위해:

  • (-7 / 3)의 결과는 -2이고 (-2 * 3)은 -6이다. 따라서 -7 % 3은 -1을 산출합니다. 왜냐하면 (-6 - (-7)) = -1이기 때문입니다.
  • (7 / -3)의 결과는 -2이고 (-2 * -3)은 6. 따라서 7 % -3은 (6 - 7) = 1과 같이 1을 생성합니다.

구현 정의 동작

두 피연산자가 모두 음수인 경우 나머지 부호는 구현에 따라 정의된다는 점에 유의하는 것이 중요합니다. 그러나 ISO14882:2011(e)부터 해당 동작은 이전 버전인 ISO14882:2003(e)처럼 더 이상 명시적으로 기술되지 않습니다.

위 내용은 모듈로 연산자는 음수를 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.