簡體   English   中英

整數除法的解釋 - 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毫秒調用一次
  • function250 毫秒調用一次
  • function380 毫秒調用一次
  • 計數器80 秒(20*50*80ms)時重置。

這里的關鍵字是every

我們以function1觸發器為例。

如果你寫count == T1 ,則function1只會在重置前執行一次,當count等於20 時

如果您想每 20毫秒運行一次function1 ,您會期望它在 20 毫秒、40 毫秒、60 毫秒等處執行。

要將這個概念轉換為代碼,您可以通過模運算符檢查計數器是否可以被20整除,因此是count % T1表達式。

相同的概念適用於T2T3檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM