【发布时间】:2016-12-14 09:20:45
【问题描述】:
我有一个 uint32 计数器。我读了这个计数器并将其存储为startCount = counter;
然后我做了一些操作,然后再次检查计数器。如果 counter 大于 startCount+1(意味着 counter 必须至少增加两次)。
if (counter > startCount +1 )
break;
现在,一旦达到 unit32 的最大值,计数器将被重置为零。 为了弥补这一点,我添加了
if (startCount == Max)
if (counter > 0)
break;
else
if (counter > startCount +1) || (counter < startCount)
break;
我的问题是:有没有更好/更聪明的方法来做到这一点? 感谢大家的帮助。
【问题讨论】:
-
您可以对两者都使用
uint64_t,但要执行以UINT23_MAX为模的操作。您还可以注意到,即使startCount == UINT23_MAX,counter > 0仍将等同于counter > startCount +1。但一般来说,就“如何做更聪明的事情”提出建议时,您首先需要说明为什么要这样做。 -
计数器是内部的,我无法更改类型。我不太擅长位比较,考虑到一些经验丰富的程序员可能面临类似问题,我想知道是否可以将这段代码简化为一条语句。