关于do{}while()的代码讨论
2010-05-17 09:18
253 查看
呵呵,自从前一篇博文《我为什么不用do{}while() 》出来以后,果不其然,有网友开始PK,访问量是越来越高。呵呵,意料之外啊。
嗯,这中间说啥的都有。
不过,有位tq朋友(http://hi.csdn.net/WvW),应该说比较认真的,由于我文中说过,有谁有do{}while()无法改写为while的,可以发给我,我试着帮忙看看,看能不能改写。因为我这么多年,确实没有见过哪个代码只能用do{}while()无法用为while(){}的。
tq朋友就真的找段代码来,让我帮忙翻译成while()版。
这位tq朋友的问题是从CSDN的短消息发过来的,问题如下:
Code:
既然你回复了, 请你写出这个伪代码, 用你的while.
微软电源管理 PowerEnumerate(NULL, 要枚举类型, 子组, 子组设置, 索引号) 函数,
大致意思是, 你提供要枚举的内容<子组> 和 子组的<设置项目>, 都靠这个函数去枚举,
看起来就是个 2级目录结构.
NO_SUBGROUP_GUID
1.1 设置1
1.2 设置2
1.子组1
1.1 设置1
1.2 设置2
2.子组
2.1设置1
2.2设置2
现在有个"特殊设置集合", 他的子组名是: NO_SUBGROUP_GUID. 这个子组无法通过 PowerEnumerate 枚举到这个子组.
但是你指定 PowerEnumerate 的子组参数 为 NO_SUBGROUP_GUID, 你却可以枚举到他的设置集合.
/// 请你把下列伪代码用 while() {} 表示吧.
void printf_power_sheme()
{
GUID uuid_subgroup= NO_SUBGROUP_GUID;
int nIndex= -1;
do
{
/// 输出子组的名称 和 一些参数
/// ... 省略20行代码
/// 枚举 <当前子组> 的第 nIndex_settings个 设置项目.
int nIndex_settings=0;
while(PowerEnumerate(NULL, 枚举子组的设置, 子组uuid, &子组的设置uuid, nIndex_settings) == ERROR_SUCCESS)
{
// 输出子组的设置项目名称. 和一些参数
/// ... 省略20行代码
nIndex_settings++
}
nIndex++;
}
while (PowerEnumerate(, 读取子组, ...., nIndex) == ERROR_SUCCESS)
//枚举第nIndex个子组.
/// 你试试用你的 while () 结构写出来试试.
}
嗯,这是个问题,看起来结构蛮复杂的。我就试着给看看。嗯,我的修改方案如下:
Code:
void TONY_printf_power_sheme()
{
GUID uuid_subgroup= NO_SUBGROUP_GUID;
int nIndex= -1;
//do //by:Tony:注意,do没用了
while(1) //by:Tony:注意:改成while了。
{
/// 输出子组的名称 和 一些参数
/// ... 省略20行代码
/// 枚举 <当前子组> 的第 nIndex_settings个 设置项目.
int nIndex_settings=0;
while(PowerEnumerate(NULL, 枚举子组的设置, 子组uuid, &子组的设置uuid, nIndex_settings) == ERROR_SUCCESS)
{
// 输出子组的设置项目名称. 和一些参数
/// ... 省略20行代码
nIndex_settings++
}
nIndex++;
//by:Tony:注意:在这个点做判断跳出,没错吧?
//by:Tony:请注意,我判断语句取反了,原来是判断==继续,现在是判断!=跳出
if(PowerEnumerate(, 读取子组, ...., nIndex) != ERROR_SUCCESS) break;
}
//by:Tony:注意,这里被隐掉了
//while (PowerEnumerate(, 读取子组, ...., nIndex) == ERROR_SUCCESS) //枚举第nIndex个子组. /// 你试试用你的 while () 结构写出来试试.
/// by:Tony:我写出来了,呵呵。
}
喏,我的改版方案就这样,大家看看,是不是成功把do{}while()改成while(){}了?
欢迎继续讨论啊。
=======================================================
肖舸
QQ:712123
Email:tonyxiaohome@hotmail.com
嗯,这中间说啥的都有。
不过,有位tq朋友(http://hi.csdn.net/WvW),应该说比较认真的,由于我文中说过,有谁有do{}while()无法改写为while的,可以发给我,我试着帮忙看看,看能不能改写。因为我这么多年,确实没有见过哪个代码只能用do{}while()无法用为while(){}的。
tq朋友就真的找段代码来,让我帮忙翻译成while()版。
这位tq朋友的问题是从CSDN的短消息发过来的,问题如下:
Code:
既然你回复了, 请你写出这个伪代码, 用你的while.
微软电源管理 PowerEnumerate(NULL, 要枚举类型, 子组, 子组设置, 索引号) 函数,
大致意思是, 你提供要枚举的内容<子组> 和 子组的<设置项目>, 都靠这个函数去枚举,
看起来就是个 2级目录结构.
NO_SUBGROUP_GUID
1.1 设置1
1.2 设置2
1.子组1
1.1 设置1
1.2 设置2
2.子组
2.1设置1
2.2设置2
现在有个"特殊设置集合", 他的子组名是: NO_SUBGROUP_GUID. 这个子组无法通过 PowerEnumerate 枚举到这个子组.
但是你指定 PowerEnumerate 的子组参数 为 NO_SUBGROUP_GUID, 你却可以枚举到他的设置集合.
/// 请你把下列伪代码用 while() {} 表示吧.
void printf_power_sheme()
{
GUID uuid_subgroup= NO_SUBGROUP_GUID;
int nIndex= -1;
do
{
/// 输出子组的名称 和 一些参数
/// ... 省略20行代码
/// 枚举 <当前子组> 的第 nIndex_settings个 设置项目.
int nIndex_settings=0;
while(PowerEnumerate(NULL, 枚举子组的设置, 子组uuid, &子组的设置uuid, nIndex_settings) == ERROR_SUCCESS)
{
// 输出子组的设置项目名称. 和一些参数
/// ... 省略20行代码
nIndex_settings++
}
nIndex++;
}
while (PowerEnumerate(, 读取子组, ...., nIndex) == ERROR_SUCCESS)
//枚举第nIndex个子组.
/// 你试试用你的 while () 结构写出来试试.
}
嗯,这是个问题,看起来结构蛮复杂的。我就试着给看看。嗯,我的修改方案如下:
Code:
void TONY_printf_power_sheme()
{
GUID uuid_subgroup= NO_SUBGROUP_GUID;
int nIndex= -1;
//do //by:Tony:注意,do没用了
while(1) //by:Tony:注意:改成while了。
{
/// 输出子组的名称 和 一些参数
/// ... 省略20行代码
/// 枚举 <当前子组> 的第 nIndex_settings个 设置项目.
int nIndex_settings=0;
while(PowerEnumerate(NULL, 枚举子组的设置, 子组uuid, &子组的设置uuid, nIndex_settings) == ERROR_SUCCESS)
{
// 输出子组的设置项目名称. 和一些参数
/// ... 省略20行代码
nIndex_settings++
}
nIndex++;
//by:Tony:注意:在这个点做判断跳出,没错吧?
//by:Tony:请注意,我判断语句取反了,原来是判断==继续,现在是判断!=跳出
if(PowerEnumerate(, 读取子组, ...., nIndex) != ERROR_SUCCESS) break;
}
//by:Tony:注意,这里被隐掉了
//while (PowerEnumerate(, 读取子组, ...., nIndex) == ERROR_SUCCESS) //枚举第nIndex个子组. /// 你试试用你的 while () 结构写出来试试.
/// by:Tony:我写出来了,呵呵。
}
喏,我的改版方案就这样,大家看看,是不是成功把do{}while()改成while(){}了?
欢迎继续讨论啊。
=======================================================
肖舸
QQ:712123
Email:tonyxiaohome@hotmail.com
相关文章推荐
- 关于一段while(1)改为do{}while(...);代码
- 关于宏定义中的do-while(0)循环
- 优美的代码:do...while(0)
- 关于宏中使用do{}while(0)的作用
- 关于利用scanf()函数做为do-while循环条件的分析
- 我也提一个关于递归的问题,代码简单,不绕,希望一起讨论一下~
- 关于将不同工作簿中格式相同工作表合并到另一工作簿中的代码再讨论
- 关于do{...}while(FALSE);
- asp.net如何加快页面加载(三)——后台代码之细节2(while,do..while,for,foreach)
- Cocos2D-x中关于do{}while(0)和CC_BREAK_IF的用法
- Cocos2d-x中关于do{} while(0) 的解释
- 关于do...while();循环最后的分号。
- 使用do...while的方法输入一个月中所有的周日(实例代码)
- 内核代码宏中 do{...}while(0) 的作用
- (课堂讨论)关于如何使代码得到有效维护
- if,while和do..while语句的汇编形式代码
- 解决代码逻辑嵌套过多的技巧 do{} while(0);
- 关于JAVA do--while的简单示例说明记录
- define中为何经常会使用 do{ } while(0);来包装多条语句代码
- 使用do...while的方法输入一个月中所有的周日(实例代码)