while循环是否可以完全替代do while循环?是的话,那do while循环的意义在哪里?

baidu_38592776 2020-04-30 10:31:09
while 1:
#语句
if 退出循环条件:
break

以上语句是不是在任何情况下都可以代替do while循环呢?
...全文
1593 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
android_cai_niao 2020-05-11
  • 打赏
  • 举报
回复
do while能做的事,while也都能做,只是有些情况,使用do while会更简单罢了,打个比方,有这样一个需求:开了一个店,进来客户必须吃苹果,最少要吃一个,吃到饱为止,不吃饱不给走(霸气!!),代码如下:

do {
     吃一个苹果;
} while (没吃饱);
这个代码应该能懂吧,一进来,不管你饱不饱,必须先吃一个,再问你饱没饱,饱了就不能吃了,不饱就要接着吃。如果用while来实现也可以,只是麻烦一些,如下:

boolean 是第一次吃 = true;
while(是第一次吃 || 没吃饱) {    
    吃一个苹果;
    是第一次吃 = false;
}
看到了吧,while也能实现一样的功能,但是代码是不是变多了,也没那么简洁了!!
qq_39936465 2020-05-09
  • 打赏
  • 举报
回复
引用 楼主 baidu_38592776 的回复:
while 1: #语句 if 退出循环条件: break 以上语句是不是在任何情况下都可以代替do while循环呢?
主要是有时候do while看上去程序更简洁,举个例子

 int i=0
  do {
     i++;		
     }while(i!=0);
如果套用while来实现的话,看上去写了2次i++

int i=0;
i++;
while(i!=0) {
	i++;
}
南忆K 2020-05-08
  • 打赏
  • 举报
回复
编程本来就是许多写法可以相互转换的,主要还是要看你业务逻辑用哪一个更合适
CS-Polaris 2020-05-01
  • 打赏
  • 举报
回复
引用 4 楼 sotondolphin 的回复:
do while 至少会执行一次
while 可能一次都不会执行

那这个根本意义就在于,先执行再判断循环条件,还是先判断循环条件再执行,可能根据事物的不同来区分吧
sunyiz 2020-04-30
  • 打赏
  • 举报
回复
甚至for循环,在特定的写法下都能替代 while 和 do while

较符合 do while 的形式:
for (;;) {
#语句
if 退出循环条件:
break;
}

较符合 while 的形式:
for (;;) {
if 退出循环条件:
break;
#语句
}
sunyiz 2020-04-30
  • 打赏
  • 举报
回复
比如你主楼的例子,反过来也一样

do {
if 退出循环条件:
break;
#语句
}while(true);

也可以完全替代 while
sunyiz 2020-04-30
  • 打赏
  • 举报
回复
while 是在做本次循环之前,先判断一个条件
do while 是做完本次循环之后,判断一个条件
也就是说 do while 无论如何都会执行一次其中的内容
而 while 则不一定

如果从结构上来说,两者都可以通过写法和逻辑处理,完全替代对方
如何选择,关键是看哪种写法更有助于自己对这一段逻辑的理解,哪种写法在当前状况下更方便
sotondolphin 2020-04-30
  • 打赏
  • 举报
回复
do while 至少会执行一次 while 可能一次都不会执行
C代码优化方案 目录 目录__ 2 C代码优化方案__ 4 1、选择合适的算法和数据结构__ 4 2、使用尽量小的数据类型__ 5 3、减少运算的强度__ 5 (1)、查表(游戏程序员必修课)_ 5 (2)、求余运算__ 6 (3)、平方运算__ 6 (4)、用移位实现乘除法运算__ 6 (5)、避免不必要的整数除法__ 8 (6)、使用增量和减量操作符__ 8 (7)、使用复合赋值表达式__ 8 (8)、提取公共的子表达式__ 9 4、结构体成员的布局__ 9 (1)按数据类型的长度排序__ 10 (2)把结构体填充成最长类型长度的整倍数__ 10 (3)按数据类型的长度排序本地变量__ 10 (4)把频繁使用的指针型参数拷贝到本地变量__ 11 5、循环优化__ 12 (1)、充分分解小的循环__ 12 (2)、提取公共部分__ 13 (3)、延时函数__ 13 (4)、while循环和do…while循环__ 14 (6)、循环展开__ 14 (6)、循环嵌套__ 15 (7)、Switch语句中根据发生频率来进行case排序__ 16 (8)、将大的switch语句转为嵌套switch语句__ 17 (9)、循环转置__ 18 (10)、公用代码块__ 19 (11)提升循环的性能__ 19 (12)、选择好的无限循环__ 20 6、提高CPU的并行性__ 21 (1)使用并行代码__ 21 (2)避免没有必要的读写依赖__ 22 7、循环不变计算__ 23 8、函数__ 24 (1)Inline函数__ 24 (2)不定义不使用的返回值__ 24
1. C 语言中的指针和内存泄漏 5 2. C语言难点分析整理 10 3. C语言难点 18 4. C/C++实现冒泡排序算法 32 5. C++中指针和引用的区别 35 6. const char*, char const*, char*const的区别 36 7. C中可变参数函数实现 38 8. C程序内存中组成部分 41 9. C编程拾粹 42 10. C语言中实现数组的动态增长 44 11. C语言中的位运算 46 12. 浮点数的存储格式: 50 13. 位域 58 14. C语言函数二维数组传递方法 64 15. C语言复杂表达式的执行步骤 66 16. C语言字符串函数大全 68 17. C语言宏定义技巧 89 18. C语言实现动态数组 100 19. C语言笔试-运算符和表达式 104 20. C语言编程准则之稳定篇 107 21. C语言编程常见问题分析 108 22. C语言编程易犯毛病集合 112 23. C语言缺陷与陷阱(笔记) 119 24. C语言防止缓冲区溢出方法 126 25. C语言高效编程秘籍 128 26. C运算符优先级口诀 133 27. do/while(0)的妙用 134 28. exit()和return()的区别 140 29. exit子程序终止函数与return的差别 141 30. extern与static存储空间矛盾 145 31. PC-Lint与C\C++代码质量 147 32. spirntf函数使用大全 158 33. 二叉树的数据结构 167 34. 位运算应用口诀和实例 170 35. 内存对齐与ANSI C中struct内存布局 173 36. 冒泡和选择排序实现 180 37. 函数指针数组与返回数组指针的函数 186 38. 右左法则- 复杂指针解析 189 39. 回车和换行的区别 192 40. 堆和堆栈的区别 194 41. 堆和堆栈的区别 198 42. 如何写出专业的C头文件 202 43. 打造最快的Hash表 207 44. 指针与数组学习笔记 222 45. 数组不是指针 224 46. 标准C中字符串分割的方法 228 47. 汉诺塔源码 231 48. 洗牌算法 234 49. 深入理解C语言指针的奥秘 236 50. 游戏外挂的编写原理 254 51. 程序实例分析-为什么会陷入死循环 258 52. 空指针究竟指向了内存的哪个地方 260 53. 算术表达式的计算 265 54. 结构体对齐的具体含义 269 55. 连连看AI算法 274 56. 连连看寻路算法的思路 283 57. 重新认识:指向函数的指针 288 58. 链表的源码 291 59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 346 65. C指针讲解 352 66. 关于指向指针的指针 368 67. C/C++ 误区一:void main() 373 68. C/C++ 误区二:fflush(stdin) 376 69. C/C++ 误区三:强制转换 malloc() 的返回值 380 70. C/C++ 误区四:char c = getchar(); 381 71. C/C++ 误区五:检查 new 的返回值 383 72. C 是 C++ 的子集吗? 384 73. C和C++的区别是什么? 387 74. 无条件循环 388 75. 产生随机数的方法 389 76. 顺序表及其操作 390 77. 单链表的实现及其操作 391 78. 双向链表 395 79. 程序员数据结构笔记 399 80. Hashtable和HashMap的区别 408 81. hash 表学习笔记 410 82. C程序设计常用算法源代码 412 83. C语言有头结点链表的经典实现 419 84. C语言惠通面试题 428 85. C语言常用宏定义 450

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧