>백엔드 개발 >C++ >C 모듈로 연산자(%)가 때때로 부정적인 결과를 반환하는 이유는 무엇입니까?

C 모듈로 연산자(%)가 때때로 부정적인 결과를 반환하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-23 19:25:11342검색

Why Does the C   Modulo Operator (%) Sometimes Return Negative Results?

모듈러스 평가: 음의 결과 이해

C에서 모듈로 연산자(%)는 특정 조건에서 음의 값을 생성하는 것으로 알려져 있습니다. 이는 특히 이러한 작업이 다른 결과를 반환하는 경우 혼란스러울 수 있습니다.

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

이 동작을 명확히 하기 위해 ISO C 표준(ISO14882:2011)을 참조합니다. 모듈로 연산자는 첫 번째 피연산자(분자)를 두 번째 피연산자(분모)로 나눈 나머지를 반환합니다.

첫 번째 연산의 경우 (-7)을 3으로 나누어 결과는 -입니다. 2이고 나머지는 -1입니다. 따라서 (-7 % 3)은 -1과 같습니다.

두 번째 연산의 경우 7을 -3으로 나누어 몫도 -2가 됩니다. 그러나 분모가 음수이므로 나머지 부호는 구현에 따라 정의됩니다. 이 경우 구현에서는 양수 나머지인 1을 반환하도록 선택합니다.

모듈로 연산자의 동작은 특정 플랫폼 및 구현에 따라 다를 수 있다는 점에 유의하는 것이 중요합니다. 일반적으로 음수 값을 신중하게 처리하고 모듈로 연산자로 작업할 때 다른 결과가 발생할 가능성을 고려하는 것이 좋습니다.

위 내용은 C 모듈로 연산자(%)가 때때로 부정적인 결과를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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