C#中%运算符的含义、用法及示例解析技术问询
理解C#中的%取模运算符
嘿,完全理解刚接触C#时对这个运算符的困惑——我当初也盯着%挠过脑袋呢!其实它叫取模运算符,核心作用就是计算两个数相除后的余数。咱们结合你给出的例子一步步拆解,就好懂多了:
第一个例子:Unity中每10帧执行一次代码
void Update() { frames++; if (frames % 10 == 0) { // 这里的代码每10帧执行一次 } }
这里frames每次调用Update都会加1,当frames % 10 == 0时,说明frames刚好是10的整数倍(10、20、30...)——因为10除以10余数是0,20除以10余数也是0,以此类推。这个判断就帮你精准地每10帧触发一次目标代码。
第二个例子:游戏时间计算
// time = 每秒加1的总秒数 int seconds = (time % 60); int minutes = (time / 60) % 60; int hours = (time / 3600) % 24; // int days = (time / 86400) % 365;
咱们逐个拆解逻辑:
time % 60:总秒数除以60的余数,就是当前分钟内的秒数(比如总秒数是75,75%60=15,对应1分15秒里的15秒)。(time / 60) % 60:先把总秒数除以60得到总分钟数,再对60取余,得到当前小时内的分钟数(比如总秒数是3700,3700/60≈61分钟,61%60=1,对应1小时1分钟里的1分钟)。(time / 3600) % 24:3600是1小时的秒数,先转成总小时数,再对24取余,得到当天的小时数(比如总秒数是90000,90000/3600=25小时,25%24=1,对应1天1小时里的1小时)。
更直观的理解方式
你可以把取模运算直接想成“除法后剩下的数”:
7 % 3 = 1(7除以3商2,剩下1)15 % 4 = 3(15除以4商3,剩下3)8 % 2 = 0(8刚好能被2整除,余数为0)
只要记住这个核心:a % b就是求a除以b后剩下的余数,你就能轻松把它套用在各种计数、周期判断的场景里啦!
内容的提问来源于stack exchange,提问作者David




