for语句可以完全代替while语句么?

liuhao159753 2009-08-18 06:55:16
最近看到一贴,说编程用for语句和用while语句是个人习惯问题,那是不是也就是说for完全可以代替while呢?如果不能够,给出实例;如果能够,那说明下为什么要存在这两个关键词?执行效率?方便?
...全文
3926 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2009-08-19
  • 打赏
  • 举报
回复
循环(for,while,do while,goto也可以够造出循环)都可以互相替代的,那么还要区别是为了写代码逻辑更清晰。
carylucky 2009-08-19
  • 打赏
  • 举报
回复
完全可以相互代替,不过有些细节要注意了,比如定义变量之类的,for()中定义变量和while()中定义变量,while()中好像会重定义吧
muzijiji 2009-08-19
  • 打赏
  • 举报
回复
for(int i;i<condition;i++)可见for多用于遍历记录
while(condion())多用检验条件是否合格。里面可以用i++来是循环退出,但仍然可以不用i++来退出,需要看实际的情况。
claio 2009-08-19
  • 打赏
  • 举报
回复
不行。特别是do。。。while(0)这种代码不能用for来替代的。在linux的源码中有很多do。。。while(0)的结构,这个结构是用宏实现函数的保证之一。
yutao_7871 2009-08-19
  • 打赏
  • 举报
回复
从逻辑的角度来说两个没有任何区别。

但不同的需求往往有不用的应用,各自有灵活的地方
例如:想先执行支持操作然后再判断外部条件,可以用do-while方式
另外,一般在线程体中尤其是一直循环运行的线程体都会用while;对数组的遍历一般都用for
fenyao 2009-08-19
  • 打赏
  • 举报
回复
关注
feishanm 2009-08-19
  • 打赏
  • 举报
回复
可以完全代替。
看个人习惯。
效率应该是一样的吧
sk_sky007 2009-08-19
  • 打赏
  • 举报
回复
学习
zhangxfeng112 2009-08-19
  • 打赏
  • 举报
回复
可以替代:

while(condition)
{
loopbody();
}
//等价于:
for(;condition;)
{
loopbody();
}

for(initial();condition;operation())
{
loopbody();
}
//等价于:
initial();
while(condition)
{
loopbody();
operation();
}
geochway 2009-08-19
  • 打赏
  • 举报
回复
完全可以相互替代,至于用哪一个,你感觉用哪一个可读性较高,你就哪一个.
周成风 2009-08-19
  • 打赏
  • 举报
回复
应该是可以相互替代的。

至于使用哪个,应该是根据情况或是个人习惯而定。
yangyunzhao 2009-08-19
  • 打赏
  • 举报
回复
for和while可以相互替代。至于楼上说的循环次数问题,根本不算问题。仅仅是编码习惯。
良好的习惯倾向于有明确次数用for,无明确次数用while,但并不强求。

for、while、do while都可以完全相互替换。只不过为了可读性,人为区分而已。但一般而言,不要混用,还是按照推荐的使用而好。
taodm 2009-08-19
  • 打赏
  • 举报
回复
楼主,去看《代码大全》找答案吧。
我辣椒哥 2009-08-19
  • 打赏
  • 举报
回复
while常用于循环次数未知
for常用于已知循环次数

分清2这区别可以相互取代
nobody@noone 2009-08-19
  • 打赏
  • 举报
回复
你要是不要求可读性的话完全可以,连do while都可以
ysysbaobei 2009-08-19
  • 打赏
  • 举报
回复
顶下
dfkjsdhfks 2009-08-19
  • 打赏
  • 举报
回复
好像可以互相替换。
MichaelBomb 2009-08-18
  • 打赏
  • 举报
回复
for效率高那么一点点吧
lixiongtao24 2009-08-18
  • 打赏
  • 举报
回复
不对,while完全可以替代for的语句。但是for不能完全替代while语句。for只能说是while的特例!
ly309431053 2009-08-18
  • 打赏
  • 举报
回复
相互替代!
加载更多回复(15)

65,180

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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