2016-11-18 10 views
2

如果我想循環訪問值0255,並使用無符號字節作爲計數器,那麼當計數器達到255時,它會返回到0,並進行無限循環。如何在遍歷無符號類型的每個值時避免無限循環?

for (ubyte i = 0; i < ubyte.max; i++) 
    //do something with i 

我想要相同的循環,但沒有將i的類型更改爲更大的類型。解決方案應該適用於任何無符號int,如uintulong

這種類型的循環在編寫代碼時是一個常見的錯誤,我需要一個通用的解決方案,而不是太冒險或醜陋。

+2

這是什麼語言 - 你有c#,C++和c。 –

+0

任何C類語言。僞代碼。該代碼段實際上是D代碼,但它們在所有代碼中都是一樣的 – Bosak

+0

@Bosak我認爲答案是特定於某種語言的。沒有通用的解決方案。 –

回答

4
ubyte i = 0; 
do 
{ 
    // do something 
} 
while (++i != 0); 
0

什麼:

for(ubyte j = 0;;) { 
    // Do something with j 
    if (j == ubyte.max) break; 
    ++j; 
} 

或:

for(ubyte j = 0;;++j) { 
    // Do something with j 
    if (j == ubyte.max) break; 
} 

我承認,我寧願在頂部條件的方案,但我沒有看到一個很好的。

1
ubyte i=0; 
do { 
    //do something with i 
} while (++i != 0); 
相關問題