You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中modulo(取模)运算符疑问:为何1%10的运算结果为1

取模运算核心规则

取模运算的数学定义为:对于整数a和正整数b,存在唯一的整数q(商)和r(余数,即a % b的运算结果),满足两个约束:

  • a = b * q + r
  • 0 ≤ r < b

案例验证

你熟悉的7 % 2 = 1

代入定义计算:
a=7,b=2,取最大的非负整数商q=3,此时r = 7 - 2*3 = 1,满足0 ≤ 1 < 2,结果符合规则。

你疑惑的1 % 10 = 1

同样代入定义:
a=1,b=10,此时能取到的最大非负整数商是q=0(如果取q≥1,b*q会大于a,导致r为负数,不满足余数的取值要求),计算得r = 1 - 10*0 = 1,完全符合0 ≤1 <10的约束,结果是正确的。

通俗理解

你可以把取模运算理解为「凑最多的整份b之后剩下的部分」:你手里只有1个物品,要按每份10个来凑整份,1份都凑不出来,剩下的自然是1个,这就是1%10=1的直观逻辑。

所有编程语言的正数取模逻辑都完全遵循上述规则,只有负数取模的边界处理会存在语言差异。


内容的提问来源于stack exchange,提问作者PRIYANSHU KUMAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:45:07