呵呵,自从前一篇博文《我为什么不用do{}while() 》出来以后,果不其然,有网友开始PK,访问量是越来越高。呵呵,意料之外啊。
嗯,这中间说啥的都有。
不过,有位tq朋友(http://hi.csdn.net/WvW),应该说比较认真的,由于我文中说过,有谁有do{}while()无法改写为while的,可以发给我,我试着帮忙看看,看能不能改写。因为我这么多年,确实没有见过哪个代码只能用do{}while()无法用为while(){}的。
tq朋友就真的找段代码来,让我帮忙翻译成while()版。
这位tq朋友的问题是从CSDN的短消息发过来的,问题如下:
Code:
  1. 既然你回复了, 请你写出这个伪代码, 用你的while.
  2. 微软电源管理 PowerEnumerate(NULL,  要枚举类型, 子组, 子组设置, 索引号) 函数,
  3. 大致意思是, 你提供要枚举的内容<子组> 和 子组的<设置项目>, 都靠这个函数去枚举,
  4. 看起来就是个 2级目录结构.
  5. NO_SUBGROUP_GUID
  6. 1.1 设置1
  7. 1.2 设置2
  8. 1.子组1
  9. 1.1 设置1
  10. 1.2 设置2
  11. 2.子组
  12. 2.1设置1
  13. 2.2设置2
  14. 现在有个"特殊设置集合", 他的子组名是: NO_SUBGROUP_GUID. 这个子组无法通过 PowerEnumerate 枚举到这个子组.
  15. 但是你指定 PowerEnumerate 的子组参数 为 NO_SUBGROUP_GUID, 你却可以枚举到他的设置集合.
  16. /// 请你把下列伪代码用 while() {} 表示吧.
  17. void printf_power_sheme()
  18. {
  19. GUID uuid_subgroup= NO_SUBGROUP_GUID;
  20. int nIndex= -1;
  21. do
  22. {
  23. /// 输出子组的名称 和 一些参数
  24. /// ... 省略20行代码
  25. /// 枚举 <当前子组> 的第 nIndex_settings个 设置项目.
  26. int nIndex_settings=0;
  27. while(PowerEnumerate(NULL, 枚举子组的设置, 子组uuid, &子组的设置uuid, nIndex_settings) == ERROR_SUCCESS)
  28. {
  29. // 输出子组的设置项目名称. 和一些参数
  30. /// ... 省略20行代码
  31. nIndex_settings++
  32. }
  33. nIndex++;
  34. }
  35. while (PowerEnumerate(, 读取子组, ...., nIndex) == ERROR_SUCCESS)
  36. //枚举第nIndex个子组.
  37. /// 你试试用你的 while () 结构写出来试试.
  38. }
嗯,这是个问题,看起来结构蛮复杂的。我就试着给看看。嗯,我的修改方案如下:
Code:
  1. void TONY_printf_power_sheme()
  2. {
  3. GUID uuid_subgroup= NO_SUBGROUP_GUID;
  4. int nIndex= -1;
  5. //do                //by:Tony:注意,do没用了
  6. while(1)            //by:Tony:注意:改成while了。
  7. {
  8. /// 输出子组的名称 和 一些参数
  9. /// ... 省略20行代码
  10. /// 枚举 <当前子组> 的第 nIndex_settings个 设置项目.
  11. int nIndex_settings=0;
  12. while(PowerEnumerate(NULL, 枚举子组的设置, 子组uuid, &子组的设置uuid, nIndex_settings) == ERROR_SUCCESS)
  13. {
  14. // 输出子组的设置项目名称. 和一些参数
  15. /// ... 省略20行代码
  16. nIndex_settings++
  17. }
  18. nIndex++;
  19. //by:Tony:注意:在这个点做判断跳出,没错吧?
  20. //by:Tony:请注意,我判断语句取反了,原来是判断==继续,现在是判断!=跳出
  21. if(PowerEnumerate(, 读取子组, ...., nIndex) != ERROR_SUCCESS) break;
  22. }
  23. //by:Tony:注意,这里被隐掉了
  24. //while (PowerEnumerate(, 读取子组, ...., nIndex) == ERROR_SUCCESS) //枚举第nIndex个子组.     /// 你试试用你的 while () 结构写出来试试.
  25. /// by:Tony:我写出来了,呵呵。
  26. }
  27. 本文转自 tonyxiaohome

  28. 51CTO博客,原文链接:http://blog.51cto.com/tonyxiaohome/316810 ,如需转载请自行联系原作者

关于do{}while()的代码讨论相关推荐

  1. 程序员太牛了 公司年会整成代码讨论会

    作者丨前端小乔 https://blog.csdn.net/weixin_44330260/article/details/86478512 公司年底年会,被程序员开成代码讨论大会,是一种什么样的体验 ...

  2. 这行代码好怪,再看一眼!聊聊在 Gitea 玩 Code Review

    大家好,我是鸭鸭. 今天给大家分享一波 Code Review 中的实用小技巧,熟练掌握这些小技巧后,保证能让你在同事的代码面前迅速打出 LGTM~ Code Review 的意义在于让可靠的代码更快 ...

  3. 低代码局中局:是IT革命还是高级外包? | 甲子光年

    低代码局中局:是IT革命还是高级外包? | 甲子光年 原创 赵健 甲子光年 今天 最大的变量或许是字节跳动的火山引擎. 作者 | 赵健 编辑 | 杨杨 2021年,企业服务领域最火的概念之一就是&qu ...

  4. 阿里工程师谈,什么是好的代码?

    作者|马飞翔(泽畔) 出品|阿里巴巴新零售淘系技术部 导读:我们每天都与代码打交道,但当被问道什么是好的代码时,很多人可能会先愣一下,然后给出的回答要么比较空泛,要么比较散,没办法简单明了地概括出来. ...

  5. 年薪10万与年薪100万的程序员,写出代码的区别

    编程是一门创造性的工作,是一门艺术.我们每天与代码打交道,为什么普通码农辛苦一年只拿十万,而高级架构师年薪百万.最主要的就是我们敲出来的代码有差别,差别在意大部分码农敲出来坏的代码,而高级架构师能敲出 ...

  6. 阿里工程师谈什么是好的代码?

    衡量代码质量的唯一有效标准:WTF/min -- Robert C. Martin 阿里工程师谈什么是好的代码? Bob 大叔对于好代码的理解非常有趣,对我也有很大的启发.我们编写的代码,除了用于机器 ...

  7. 阿里工程师谈,什么是好的代码

    导读:我们每天都与代码打交道,但当被问道什么是好的代码时,很多人可能会先愣一下,然后给出的回答要么比较空泛,要么比较散,没办法简单明了地概括出来.显然,这个问题并没有唯一的标准答案,谁都可以谈论自己的 ...

  8. 飞速企业级低代码 | 低代码市场火热:是 IT 革命还是高级外包

    低代码,一种快速开发应用的软件,将通用.可重复利用的代码形成组件化的模块,通过图形化的界面来拖拽组件并形成应用.低代码能够实现只写少量代码或不写代码,类似用"乐高积木"的方式来开发 ...

  9. 终于有人把“低代码”讲清楚了!

    一.背景 低代码对于我本身而言是挺矛盾的,毕竟工作中我几乎用不到它.一开始接触到低代码的时候我也是有抵触或者鄙视心理的,毕竟手写代码的快乐,沉浸式的那种感觉很少能体验到了. 我也通过最近几年的工作经历 ...

最新文章

  1. SpringCloud Alibaba 微服务架构版本说明
  2. 桥接模式(Bridge)
  3. js的规范写法ES5(自己以后按照这样写)
  4. js面向对象思想封装拖拽功能,兼容pc和移动端
  5. mysql 启动报错-server PID file could not be found
  6. Python之字符串正则匹配
  7. 用c语言输出100到200之间的素数
  8. swagger配置及注解详解
  9. coverity静态安全扫描分析软件linux环境搭建
  10. CDR 制作“决战高考”海报
  11. EXCEL电子表格的基本操作
  12. Java邮件发送基于springboot实现
  13. Gerrit error:remote: ERROR: The following addresses are currently registered:XXX
  14. 苹果2014WWDC亮点之个人浅见
  15. 企业如何CRM管理软件中受益
  16. 【九】分布式微服务架构体系详解——共识问题
  17. win10升级补丁_Win 10 暂停更新及回滚方法
  18. Android学习之Pair类 (android.util.Pair )
  19. 微信小程序服务商下子商户支付下单接口
  20. 无刷直流电机控制系统matlab,基于MATLAB的无刷直流电动机控制系统仿真

热门文章

  1. jenkins配置节点为windows代理
  2. android菜单键选择图标,Android Design
  3. java虚拟机工作原理_Java虚拟机工作原理具体解释
  4. find函数常见错误_如何利用FIND找出你要的数据-EXCEL-开篇3-字符串函数系列-2
  5. TAUCS库的编译(vs2010)
  6. matlab中箭头详细设置
  7. 图像超分辨率增强ESRGAN运行教程,有数据
  8. 泵车砼活塞故障预警-冠军方案
  9. vue企业门户网站模板_门户网站建设费用需要多少钱?
  10. java圆角矩形_[转]c# 画圆角矩形