我有一個簡單的循環,這看起來應該像這樣迭代從MINVALUE到MaxValue的溢出
for (sbyte i = sbyte.MinValue; i <= sbyte.MaxValue; i++)
{
Console.WriteLine(i);
}
不幸sbyte.MaxValue +1 = sbyte.MinValue
所以這從來沒有滿足結束條件。我的解決方法是從-128
到127
使用int
,但是是否還有一個本地sbyte
方法?
我有一個簡單的循環,這看起來應該像這樣迭代從MINVALUE到MaxValue的溢出
for (sbyte i = sbyte.MinValue; i <= sbyte.MaxValue; i++)
{
Console.WriteLine(i);
}
不幸sbyte.MaxValue +1 = sbyte.MinValue
所以這從來沒有滿足結束條件。我的解決方法是從-128
到127
使用int
,但是是否還有一個本地sbyte
方法?
不考慮明顯
輸出以外的所有
MaxValue
,然後輸出MaxValue
的做法,我看到一個解決方案。
它的工作原理,但看起來怪異,並拋出OverflowException
如果checked
:)
sbyte i = sbyte.MinValue;
do
{
Console.WriteLine(i++);
} while (i != sbyte.MinValue);
對不起,這是一個錯誤。這段代碼絕對有效,因爲它現在寫成! –
@MthetheWWatson沒關係:)只花了一些時間試圖弄清楚:D –
你可以試試這個:
for (sbyte i = sbyte.MinValue; i <= sbyte.MaxValue; i++)
{
Console.WriteLine(i);
if(i==sbyte.MaxValue)
break;
}
您可以使用只爲條件的int
和sbyte
內。
int checkVal = sbyte.MinValue;
for (sbyte i = sbyte.MinValue; checkVal <= sbyte.MaxValue; i++, checkVal++)
{
Console.WriteLine(i);
}
這個作品! +1 – Toshi
我認爲在循環條件中刪除「=」應該就足夠了.. –