2016-12-14 78 views
2

我有一個uint32計數器。我讀了這個計數器,並將其存儲爲startCount = 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

你可以用'uint64_t'兩個,但瓶坯操作模'UINT23_MAX'。你也可以注意到,即使'startCount == UINT23_MAX','counter> 0'仍然等於'counter> startCount + 1'。但總的來說,給出關於「如何做更聰明的事」的建議需要你展示爲什麼你要做到這一點。 – StoryTeller

+0

計數器是內部的,我不能改變類型。我不太喜歡比較比較,我想知道這個代碼塊是否可以歸結爲一個單一的聲明,考慮到一些expreience程序員可能面臨相似問題。 –

回答

0

只是檢查下面這應該面面俱到

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

`

+1

ofcourse這假設至少有一個增量..可能不適合你的情況? –