整数除法的解释-C代码

问题描述 投票:1回答:2

我有以下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
   }

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

先谢谢您。

c integer-division
2个回答
4
投票

根据您发布的代码,看起来像这样:

  • function1将被称为每个 20ms
  • function2将被称为每个 50ms
  • function3将被称为每个 80ms
  • 计数器重置at 80秒(20 * 50 * 80ms)。

这里的关键词是每个

function1触发器为例。

如果写入count == T1,则当function1等于20时,count仅在复位之前执行一次。

如果要运行function1 每一个 20ms,您希望它以20ms,40ms,60ms等执行。

要将此概念转换为代码,请通过模运算符检查计数器是否可被20整除,从而检查count % T1表达式。

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

© www.soinside.com 2019 - 2024. All rights reserved.