我有一个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;
我的问题是:有更好/更聪明的方法吗? 感谢您的帮助。
答案 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 为模。