为什么7%-5给出2但-7%5给-2?这两种情况都不应该是-2吗?

Jug*_*gni 0 c modulo

请解释以下原因,数学上正确的答案是-2两种情况:

int a=7%-5; //Assigns 2 to a
int a=-7%5;  //Assigns -2 to a
Run Code Online (Sandbox Code Playgroud)

代码在C中.

Spo*_*ook 11

7 / -5 = -1剩下的2,因为-1 * -5 + 2 = 5 + 2 = 7.

-7 / 5 = -1剩下的-2,因为-1 * 5 + (-2) = -5 - 2 = -7.

% 在C++中是一个余数运算符(正数用作数学模运算符).