当前位置:  开发笔记 > 编程语言 > 正文

从0x0000循环到0xFFFF

如何解决《从0x0000循环到0xFFFF》经验,为你挑选了2个好方法。

我想要一个使用UInt16(ushort)循环遍历其所有值的循环.但是,这不会这样做:

for( ushort i = 0; i < UInt16.MaxValue; i++ )
{
    // do something
}

问题是,当i == 0xFFFF而不是"做某事"时,循环将退出.如果我将'for'语句更改为"for(ushort i = 0; i <= UInt16.MaxValue; i ++)",那么它将变为无限循环,因为我永远不会达到0x10000因为ushorts只转到0xFFFF.

我可以使'i'成为一个int并将其转换为或者将其分配给循环中的ushort变量.

有什么建议?



1> Chris Marast..:

使用do...while循环

ushort i = 0;
do
{
    // do something
} while(i++ < UInt16.MaxValue);

有一个在顶部或底部测试循环的一个有趣的讨论在这里.



2> spoulson..:

UInt16.MaxValue评估0xffff,而不是0x10000.我认为你可以用do/ whileloop 做这个,作为burkhard1979答案的一个变种.

ushort i = 0;
do {
   ...
} while (++i != 0);

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有