> 백엔드 개발 > C++ > 모듈로 연산자가 음수로 음수 결과를 생성하는 이유는 무엇입니까?

모듈로 연산자가 음수로 음수 결과를 생성하는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-17 09:55:25
원래의
215명이 탐색했습니다.

Why Does the Modulo Operator Produce Negative Results with Negative Numbers?

음수 값이 되는 모듈로 연산자: 수학적 설명

모듈로 연산자 %를 음수에 적용하면 다음과 같은 결과가 달라질 수 있습니다. 구현에. 이는 혼란스러울 수 있지만 모듈로 연산자의 수학적 정의를 이해하면 이 동작을 이해할 수 있습니다.

ISO14882:2011(e) 5.6-4에 따르면 모듈로 연산자는 나눗셈의 나머지를 반환합니다. 두 번째의 첫 번째 표현. 두 번째 피연산자가 0이면 동작이 정의되지 않습니다. 정수 피연산자의 경우 몫은 소수 부분을 버린 대수 몫입니다.

이를 설명하려면 다음 예를 고려하세요.

std::cout << (-7 % 3) << std::endl; // -1
std::cout << (7 % -3) << std::endl; // 1
로그인 후 복사

(-7 % 3) = -1

  • -7을 3으로 나누면 -2의 대수적 몫.
  • -2에 3을 곱하면 -6이 됩니다.
  • 따라서 -7을 3으로 나눈 나머지는 -1입니다.

(7% -3) = 1

  • 7을 -3으로 나누면 -2의 대수적 몫이 나옵니다.
  • -2에 -3을 곱하면 6이 됩니다.
  • 나머지 따라서 7을 -3으로 나눈 값은 1입니다.

두 가지 모두에 유의하세요. 경우 대수적 몫은 동일합니다(-2). 나머지의 차이는 두 피연산자의 부호가 서로 다른 경우 구현에서 정의한 나머지 부호로 인해 발생합니다.

위 내용은 모듈로 연산자가 음수로 음수 결과를 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿