C 语言中的 % 是余数操作符,而不是模数操作符。
%
模数被定义为 k := n - d*q,q 是一个整数使得 k 的符号和 d 的符号一致,同时使得 k 的绝对值尽可能的小。
k := n - d*q
q
k
d
余数被定义为 k := n - (n/d)*d,k 的符号和 n 一致。
k := n - (n/d)*d
n
参考资料 Remainder Modulo operation with negative numbers
参考资料