作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想要一个使用 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 变量。
有什么建议吗?
最佳答案
使用do...while
循环
ushort i = 0;
do
{
// do something
} while(i++ < UInt16.MaxValue);
关于在顶部和底部测试循环有一个有趣的讨论 here .
关于c# - 从 0x0000 循环到 0xFFFF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/231098/
以下代码行与 Visual Studio 2013 一起运行: wchar_t test[] = L"\xffff"; wchar_t buf[100]; int ret = swprintf(
我是一名优秀的程序员,十分优秀!