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

C#中%运算符的含义、用法及示例解析

理解C#中的%运算符(取模/求余)

嘿,作为刚接触C#的新手,搞懂基础运算符确实很重要——别担心,%运算符其实比你想的直白,咱们结合你给的例子一步步拆解:

首先明确:%在C#里是取模(也叫求余)运算符,它的作用是返回两个整数相除后的余数。比如a % b,计算的是a除以b之后,剩下的那个不够再除一次的数(结果的符号和被除数一致,但你的例子里都是正数,暂时不用纠结这点)。

第一个例子:Unity每10帧执行一次逻辑

你给出的代码是这样的:

void Update() 
{ 
    frames++; 
    if (frames % 10 == 0) 
    { 
        // 要执行的方法
    } 
}

这里frames每帧都会自增1,frames % 10会计算当前frames除以10的余数:

  • 当frames是1-9的时候,余数是1-9,不等于0,所以不会触发方法;
  • 当frames到10的时候,10÷10=1,余数是0,触发方法;
  • 之后frames到20、30...每到10的整数倍时,余数都是0,就会重复执行逻辑。
    简单说,%在这里帮你判断数值是否达到了某个周期的整数倍,用来做定时/定次数的触发非常方便。

第二个例子:游戏时间的拆分计算

这段代码是把累计的秒数time拆成时分秒:

// time = 每秒自增1的累计秒数
int seconds = (time % 60);
int minutes = (time / 60) % 60;
int hours = (time / 3600) % 24;
// int days = (time / 86400) % 365;

咱们逐行看:

  • seconds = time % 60:1分钟有60秒,用%60可以把超过60的部分“砍掉”,只保留当前分钟内的秒数。比如time=65,65%60=5,就是当前的5秒;
  • minutes = (time / 60) % 60:先time / 60用整数除法得到累计的总分钟数(比如time=3665,3665÷60=61分钟),再%60就把超过60的部分砍掉,得到当前小时内的分钟数(61%60=1,就是1分钟);
  • hours = (time / 3600) % 24:time / 3600得到累计的总小时数(比如time=86465,86465÷3600=24小时),再%24就得到当前天内的小时数(24%24=0,就是0点)。
    这里%的作用是把大的累计数值,按时间单位的进制(60秒=1分,24小时=1天)拆分成单个单位的数值,相当于“取当前单位的余数,舍去更高单位的部分”。

怎么更好理解%运算符?

你可以把它当成一个「分组工具」:
假设你把所有整数按b个为一组来划分,a % b的结果就告诉你a在当前组里的“位置”——如果结果是0,说明a刚好是某一组的最后一个数;如果结果是n(n<b),说明a在组里的第n个位置。

比如按10分组:10、20、30...都是组的末尾,余数0;15在第2组的第5个位置,余数5。这样不管是做周期触发,还是拆分进制数值,都能快速想明白%的作用啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:02:24