我有几行C代码用于测试模运算符,如下所示: // line 1 printf("%d\n", 5 % (-3)); => output: 2 // line 2 printf("%d\n", -5 % 3); => output: -2 我知道模运算的符号取决于分子的符号,但我很好奇为什么不是取决于分母的符号呢?
5/(-3) = -1; (-5)/3 = -1; If that is agreed then let's calculate the remainder Remainder = Dividend - ( Divisor * Factor) 5 - (-3 * -1) = 2 -5 - (3 * -1) = -2
%
和负数的组合的结果都是由具体实现定义的。 - cHao