正负数之间取模运算

发布时间 2023-08-25 09:08:49作者: ZnPdCo

转载自:C语言:正负数之间取模运算_ProgBelief的博客-CSDN博客清北学堂数学笔记整理1 - weijianzhen - 博客园 (cnblogs.com)

如果 % 两边的操作数都为正数,则结果为正数或零;如果 % 两边的操作数都是负数,则结果为负数或零。C99 以前,并没有规定如果操作数中有一方为负数,模除的结果会是什么。C99 规定,如果 % 左边的操作数是正数,则模除的结果为正数或零;如果 % 左边的操作数是负数,则模除的结果为负数或零。例如:

      15 % 2       // 余 1
      15 % -2      // 余 1
      -15 % 2      // 余 -1
      -15 % -2     // 余 -1

标准规定,如果 a 和 b 都是整数,则 a % b 可以用公式 a - (a / b) * b 算出。例如:

      -15 % 2 == -15 - (-15 / 2) * 2 == -15 - (-7) * 2 == -1

总结:

正数模正数为正数。

正数模负数为正数。

负数模正数为负数。

负数模负数为负数。