整数除法的解释 - C 代码

Gen*_*zzi 2 c integer-division

我有以下 C 代码:

int count = 0; // relative time
int T1 = 20; // period 1 in ms
int T2 = 50; // period 2 in ms
int T3 = 80; // period 3 in ms
   while (1) {
      if (count%T1 == 0) function1();
      if (count%T2 == 0) function2();
      if (count%T3 == 0) function3();
      count++;
      if (count == T1*T2*T3) count = 0;
      delay(1); // wait for 1 ms
   }
Run Code Online (Sandbox Code Playgroud)

我想知道有整数除法 count%T1==0 而不是 count==T1 的原因。也许是考虑到周期 T1 可能不是整数?

先感谢您。

Mat*_*ini 6

从你发布的代码来看,它看起来像这样:

  • function1每 20毫秒调用一次
  • function250 毫秒调用一次
  • function380 毫秒调用一次
  • 计数器80 秒(20*50*80ms)时重置。

这里的关键字是every

我们以function1触发器为例。

如果你写count == T1,function1只会在重置前执行一次, whencount等于20

如果您想function1 每 20毫秒运行一次,您会期望它在 20 毫秒、40 毫秒、60 毫秒等处执行。

要将这个概念转化为代码,您可以通过模运算符检查计数器是否可以被20整除,从而得到count % T1表达式。

相同的概念适用于T2T3检查。