整数除法的解释——C代码
Interpretation of an integer division - C code
我有以下 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
}
我想知道整数除法count%T1==0而不是count==T1的原因。可能考虑到周期T1可能不是整数?
提前致谢。
根据您发布的代码,它看起来是这样的:
function1
将被调用 每 20 毫秒
function2
将被调用 每 50 毫秒
function3
将被调用 每 80 毫秒
- 计数器在 80 秒(20*50*80ms)时重置。
这里的关键词是every.
我们以function1
触发器为例。
如果你写count == T1
,当count
等于20时,function1
只会在重置前执行一次。
如果你想运行 function1
每 20 毫秒,你会期望它在 20 毫秒、40 毫秒、60 毫秒等处执行。
为了将这个概念转化为代码,您检查计数器是否可以通过模运算符被 20 整除,因此 count % T1
表达式。
相同的概念适用于 T2
和 T3
检查。
我有以下 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
}
我想知道整数除法count%T1==0而不是count==T1的原因。可能考虑到周期T1可能不是整数?
提前致谢。
根据您发布的代码,它看起来是这样的:
function1
将被调用 每 20 毫秒function2
将被调用 每 50 毫秒function3
将被调用 每 80 毫秒- 计数器在 80 秒(20*50*80ms)时重置。
这里的关键词是every.
我们以function1
触发器为例。
如果你写count == T1
,当count
等于20时,function1
只会在重置前执行一次。
如果你想运行 function1
每 20 毫秒,你会期望它在 20 毫秒、40 毫秒、60 毫秒等处执行。
为了将这个概念转化为代码,您检查计数器是否可以通过模运算符被 20 整除,因此 count % T1
表达式。
相同的概念适用于 T2
和 T3
检查。