社区
C++ 语言
帖子详情
笔试题:简述以下两个for循环的优缺点
LoveBoydan
2010-07-14 08:08:28
请简述以下两个for循环的优缺点
// 第一个
for (i=0; i++;)
{
if (condition)
DoSomething();
else
DoOtherthing();
}
// 第二个
if (condition)
{
for (i=0; i++;)
DoSomething();
}
else
{
for (i=0; i++;)
DoOtherthing();
}
优点:
缺点:
优点:
缺点:
...全文
1095
45
打赏
收藏
笔试题:简述以下两个for循环的优缺点
请简述以下两个for循环的优缺点 // 第一个 for (i=0; i++;) { if (condition) DoSomething(); else DoOtherthing(); } // 第二个 if (condition) { for (i=0; i++;) DoSomething(); } else { for (i=0; i++;) DoOtherthing(); } 优点: 缺点: 优点: 缺点:
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
45 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
helisong427
2012-08-16
打赏
举报
回复
我今天去面试也做了这个题,以前没有遇到过,我考虑到在多线程情况下,condition会变化,那么第二种就有问题了,后面我又想到,如果在DoSomething里面改变了condition变量,就是希望下次执行DoOtherthing,第二种情况逻辑也是错误的。面试官直接给0分。
面试官应该不是搞技术的,其他题目就不说了,都是很教条式的考题,看了试题就叫我回去了。伤不起哦~~
helisong427
2012-08-16
打赏
举报
回复
我今天去面试也做了这个题,以前没有遇到过,我考虑到在多线程情况下,condition会变化,那么第二种就有问题了,后面我又想到,如果在DoSomething里面改变了condition变量,就是希望下次执行DoOtherthing,第二种情况逻辑也是错误的。面试官直接给0分。
面试官应该不是搞技术的,其他题目就不说了,都是很教条式的考题,看了试题就叫我回去了。伤不起哦~~
EdwardLu_
2010-10-23
打赏
举报
回复
多执行了个循环?!
黑泡泡选手
2010-08-02
打赏
举报
回复
面试题总是从上面挖过来!
herman~~
2010-08-02
打赏
举报
回复
感觉像是面试题
Csuxiaowu
2010-08-02
打赏
举报
回复
学习了 学习了
cauyus
2010-08-02
打赏
举报
回复
没看过林锐的书。。。觉得这个问题挺那个的。
2段代码,实现不同的功能。。能说代码简洁。。
偶是江湖中人
2010-07-15
打赏
举报
回复
《高质量c++/c程序设计》
luocw110
2010-07-15
打赏
举报
回复
见解不错
xushuai0794
2010-07-15
打赏
举报
回复
其实这个就是循环内层和外层的大小的问题,C/C++编程规范里面的
zhengweihit
2010-07-15
打赏
举报
回复
知道一点编译优化的就知道了,效率上确实是第2种高。循环中代码外提可以提高编译器对循环的流水线处理,参考编译原理界的“龙书”。
fengqiao1999
2010-07-15
打赏
举报
回复
第一个,代码清析,容易理解,缺点是每一次循环里都有比较,增加了程序空间复杂度;
第二个,代码相比第一个复杂一点,但循环里没有比较,降低了空间复杂度。
linsen_519
2010-07-15
打赏
举报
回复
[Quote=引用 10 楼 tu_lq 的回复:]
以下是林锐的原文:
for (i=0; i<N; i++)
{
if (condition)
DoSomething();
else
DoOtherthing();
}
优点:程序简洁
缺点:多执行了N-1次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。
if (condition)
{
for (i=0; i<N;……
[/Quote]
林锐其实是SB,他误导了多少新手。所以这道题出自他的手也不足为奇,稍微懂一点C++的人都能看的出,这两个逻辑有天壤之别!有可比性吗? 我拿一个视频算法和一个状态机谁去给我比比看?
zsdl1288
2010-07-15
打赏
举报
回复
一个是在for循环加入判断语句 使得循环不连续 增大运行时间
另一个是在判断后执行for循环 虽然没有打断循环连续 但代码增加
如果是同样的逻辑的话 建议不在for循环中加判断
Mg
2010-07-15
打赏
举报
回复
很常见的一个比较~
@肖凌
2010-07-15
打赏
举报
回复
高质量程序设计指南——C++/C语言》word版本,后面的习题,主要从编译的角度来说明
Q446512799
2010-07-15
打赏
举报
回复
1.效率低但程序简洁
2.效率高但程序不简洁
1的程序比2多执行了N-1次逻辑判断。并且由于前者老要进行逻辑判断,打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。如果N非常大,最好采用2的写法,可以提高效率。如果N非常小,两者效率差别并不明显,采用1的写法比较好,因为程序更加简洁。
走好每一步
2010-07-15
打赏
举报
回复
逻辑一样的话,效率其实也差不了太远。不过更喜欢后一种。
yshuise
2010-07-15
打赏
举报
回复
现代编译器对for循环的优化,都不需要关注它了。我想。
YukiCEO
2010-07-15
打赏
举报
回复
只是写了伪代码,两个程序完成的功能其实是一样的
第一个,代码清析,容易理解,缺点是每一次循环里都有比较,增加了程序空间复杂度;
第二个,代码相比第一个复杂一点,但循环里没有比较,降低了空间复杂度。
自己写程序时可做一个比较,如果你确知循环的上限在较少范围内,这种差异可以忽略不计时,可选择第一种易于阅读的,但如果循环上限未知的,或是循环上限比较大的,应该选择第二种
加载更多回复(25)
C++ 语言
64,685
社区成员
250,491
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章