比较重置的计数器

时间:2016-12-14 09:20:45

标签: c++ c logic counter

我有一个uint32计数器。我读了这个计数器并将其存储为startCount = counter; 然后我做了一些操作,然后再次检查计数器。如果counter大于startCount + 1(表示计数器必须至少递增两次)。

if (counter > startCount +1 )
  break;

现在计数器一旦达到unit32的最大值就会重置为零。 为了弥补这一点,我添加了

if (startCount == Max)
  if (counter > 0)
    break;
else
  if (counter > startCount +1) || (counter < startCount)
    break;

我的问题是:有更好/更聪明的方法吗? 感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

只需检查以下内容即可涵盖所有内容

if (counter > startCount +1) || ( (counter != startCount) && (counter < startCount +1)) 
    break;

`

答案 1 :(得分:0)

我会用

if (counter-startCount > 1) break;

或者,如果我想允许int的位数超过32位,

if ((uint32_t)(counter-startCount) > 1) break;

增量数以模2 32 为模。