// 第一个
for (i=0; i++;)
{
if (condition)
DoSomething();
else
DoOtherthing();
}
// 第二个
if (condition)
{
for (i=0; i++;)
DoSomething();
}
else
{
for (i=0; i++;)
DoOtherthing();
}
优点:
缺点:
优点:
缺点:
45 个解决方案
#1
真不知道
#2
逻辑上都不一样,怎么比较。
#3
请简述以下两个for循环的优缺点
// 第一个
for (i=0; i++;)
{
if (condition)
DoSomething();
else
DoOtherthing();
}
// 第二个
if (condition)
{
for (i=0; i++;)
DoSomething();
}
else
{
for (i=0; i++;)
DoOtherthing();
}
优点:代码简捷
缺点:打断循环连续性
优点:代码量大
缺点:循环连续性强
// 第一个
for (i=0; i++;)
{
if (condition)
DoSomething();
else
DoOtherthing();
}
// 第二个
if (condition)
{
for (i=0; i++;)
DoSomething();
}
else
{
for (i=0; i++;)
DoOtherthing();
}
优点:代码简捷
缺点:打断循环连续性
优点:代码量大
缺点:循环连续性强
#4
干的活都不一样,哈
#5
逻辑都不一样 比什么比。。 楼主 不知道 想比什么
看哪个代码长???
看哪个代码长???
#6
杯具。楼主和我一起面试- -。这个我看了好几遍也觉得逻辑都不一样,竟然也比。
后来我就直说如果condition事先确定的话,就XXX了
后来我就直说如果condition事先确定的话,就XXX了
#7
你们在哪儿面试啊??
#8
.....林锐的博士论文里面抄的,建议去看那篇高质量C++编程的博士论文,你就知道了,这公司很懒,可能别的题也会从里面出
#9
广州,当天过了两面了,叫我等总监,不过肚子实在饿,让我先回来
#10
以下是林锐的原文:
for (i=0; i<N; i++)
{
if (condition)
DoSomething();
else
DoOtherthing();
}
优点:程序简洁
缺点:多执行了N-1次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。
if (condition)
{
for (i=0; i<N; i++)
DoSomething();
}
else
{
for (i=0; i<N; i++)
DoOtherthing();
}
优点:循环的效率高
缺点:程序不简洁
for (i=0; i<N; i++)
{
if (condition)
DoSomething();
else
DoOtherthing();
}
优点:程序简洁
缺点:多执行了N-1次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。
if (condition)
{
for (i=0; i<N; i++)
DoSomething();
}
else
{
for (i=0; i<N; i++)
DoOtherthing();
}
优点:循环的效率高
缺点:程序不简洁
#11
优点:代码简捷
缺点:打断循环连续性
优点:代码量大
缺点:循环连续性强
C_C++高质量编程里面的东西
不过这个东西跟编译器的具体实现有很大关系,不要单纯的认为就是这样
缺点:打断循环连续性
优点:代码量大
缺点:循环连续性强
C_C++高质量编程里面的东西
不过这个东西跟编译器的具体实现有很大关系,不要单纯的认为就是这样
#12
晕,我就是这个答案哦,不过我想不到简洁也算答案,没写上去
#13
《高质量程序设计指南——C++/C语言》(第三版)第77页。
建议4-5:
如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断转移到循环体的外面。
建议4-5:
如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断转移到循环体的外面。
#14
这个是程序的优化问题,在编译器的内部,就有这样的优化,缩短编译时间,编译原理 或者 计算理论 里面好像有讲到的 。
#15
学习了~
#16
《高质量程序设计指南——C++/C语言》
电子版的哪里有?
电子版的哪里有?
#17
学习了……
#18
1.效率低但程序简洁
2.效率高但程序不简洁
1的程序比2多执行了N-1次逻辑判断。并且由于前者老要进行逻辑判断,打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。如果N非常大,最好采用2的写法,可以提高效率。如果N非常小,两者效率差别并不明显,采用1的写法比较好,因为程序更加简洁。
2.效率高但程序不简洁
1的程序比2多执行了N-1次逻辑判断。并且由于前者老要进行逻辑判断,打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。如果N非常大,最好采用2的写法,可以提高效率。如果N非常小,两者效率差别并不明显,采用1的写法比较好,因为程序更加简洁。
#19
很常见的一个比较~
#20
一个是在for循环加入判断语句 使得循环不连续 增大运行时间
另一个是在判断后执行for循环 虽然没有打断循环连续 但代码增加
如果是同样的逻辑的话 建议不在for循环中加判断
另一个是在判断后执行for循环 虽然没有打断循环连续 但代码增加
如果是同样的逻辑的话 建议不在for循环中加判断
#21
林锐其实是SB,他误导了多少新手。所以这道题出自他的手也不足为奇,稍微懂一点C++的人都能看的出,这两个逻辑有天壤之别!有可比性吗? 我拿一个视频算法和一个状态机谁去给我比比看?
#22
知道一点编译优化的就知道了,效率上确实是第2种高。循环中代码外提可以提高编译器对循环的流水线处理,参考编译原理界的“龙书”。
#23
其实这个就是循环内层和外层的大小的问题,C/C++编程规范里面的
#24
见解不错
#25
《高质量c++/c程序设计》
#26
应该是时间复杂度有关吧!,看下他们运行所需的时间,就知道区别了
#27
学习。。。
#28
受教了...
#29
《C++高质量编程》里面的例题
呵 面试的题目~
呵 面试的题目~
#30
可能会对性能有影响,
#31
这个逻辑确实不一样
#32
小弟不才,这程序逻辑怎么会不一样呢?
#33
学学排列和组合就知道了
#34
只是写了伪代码,两个程序完成的功能其实是一样的
第一个,代码清析,容易理解,缺点是每一次循环里都有比较,增加了程序空间复杂度;
第二个,代码相比第一个复杂一点,但循环里没有比较,降低了空间复杂度。
自己写程序时可做一个比较,如果你确知循环的上限在较少范围内,这种差异可以忽略不计时,可选择第一种易于阅读的,但如果循环上限未知的,或是循环上限比较大的,应该选择第二种
第一个,代码清析,容易理解,缺点是每一次循环里都有比较,增加了程序空间复杂度;
第二个,代码相比第一个复杂一点,但循环里没有比较,降低了空间复杂度。
自己写程序时可做一个比较,如果你确知循环的上限在较少范围内,这种差异可以忽略不计时,可选择第一种易于阅读的,但如果循环上限未知的,或是循环上限比较大的,应该选择第二种
#35
现代编译器对for循环的优化,都不需要关注它了。我想。
#36
逻辑一样的话,效率其实也差不了太远。不过更喜欢后一种。
#37
高质量程序设计指南——C++/C语言》word版本,后面的习题,主要从编译的角度来说明
#38
第一个,代码清析,容易理解,缺点是每一次循环里都有比较,增加了程序空间复杂度;
第二个,代码相比第一个复杂一点,但循环里没有比较,降低了空间复杂度。
第二个,代码相比第一个复杂一点,但循环里没有比较,降低了空间复杂度。
#39
没看过林锐的书。。。觉得这个问题挺那个的。
2段代码,实现不同的功能。。能说代码简洁。。
2段代码,实现不同的功能。。能说代码简洁。。
#40
学习了 学习了
#41
感觉像是面试题
#42
面试题总是从上面挖过来!
#43
多执行了个循环?!
#44
我今天去面试也做了这个题,以前没有遇到过,我考虑到在多线程情况下,condition会变化,那么第二种就有问题了,后面我又想到,如果在DoSomething里面改变了condition变量,就是希望下次执行DoOtherthing,第二种情况逻辑也是错误的。面试官直接给0分。
面试官应该不是搞技术的,其他题目就不说了,都是很教条式的考题,看了试题就叫我回去了。伤不起哦~~
面试官应该不是搞技术的,其他题目就不说了,都是很教条式的考题,看了试题就叫我回去了。伤不起哦~~
#45
我今天去面试也做了这个题,以前没有遇到过,我考虑到在多线程情况下,condition会变化,那么第二种就有问题了,后面我又想到,如果在DoSomething里面改变了condition变量,就是希望下次执行DoOtherthing,第二种情况逻辑也是错误的。面试官直接给0分。
面试官应该不是搞技术的,其他题目就不说了,都是很教条式的考题,看了试题就叫我回去了。伤不起哦~~
面试官应该不是搞技术的,其他题目就不说了,都是很教条式的考题,看了试题就叫我回去了。伤不起哦~~
#1
真不知道
#2
逻辑上都不一样,怎么比较。
#3
请简述以下两个for循环的优缺点
// 第一个
for (i=0; i++;)
{
if (condition)
DoSomething();
else
DoOtherthing();
}
// 第二个
if (condition)
{
for (i=0; i++;)
DoSomething();
}
else
{
for (i=0; i++;)
DoOtherthing();
}
优点:代码简捷
缺点:打断循环连续性
优点:代码量大
缺点:循环连续性强
// 第一个
for (i=0; i++;)
{
if (condition)
DoSomething();
else
DoOtherthing();
}
// 第二个
if (condition)
{
for (i=0; i++;)
DoSomething();
}
else
{
for (i=0; i++;)
DoOtherthing();
}
优点:代码简捷
缺点:打断循环连续性
优点:代码量大
缺点:循环连续性强
#4
干的活都不一样,哈
#5
逻辑都不一样 比什么比。。 楼主 不知道 想比什么
看哪个代码长???
看哪个代码长???
#6
杯具。楼主和我一起面试- -。这个我看了好几遍也觉得逻辑都不一样,竟然也比。
后来我就直说如果condition事先确定的话,就XXX了
后来我就直说如果condition事先确定的话,就XXX了
#7
你们在哪儿面试啊??
#8
.....林锐的博士论文里面抄的,建议去看那篇高质量C++编程的博士论文,你就知道了,这公司很懒,可能别的题也会从里面出
#9
广州,当天过了两面了,叫我等总监,不过肚子实在饿,让我先回来
#10
以下是林锐的原文:
for (i=0; i<N; i++)
{
if (condition)
DoSomething();
else
DoOtherthing();
}
优点:程序简洁
缺点:多执行了N-1次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。
if (condition)
{
for (i=0; i<N; i++)
DoSomething();
}
else
{
for (i=0; i<N; i++)
DoOtherthing();
}
优点:循环的效率高
缺点:程序不简洁
for (i=0; i<N; i++)
{
if (condition)
DoSomething();
else
DoOtherthing();
}
优点:程序简洁
缺点:多执行了N-1次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。
if (condition)
{
for (i=0; i<N; i++)
DoSomething();
}
else
{
for (i=0; i<N; i++)
DoOtherthing();
}
优点:循环的效率高
缺点:程序不简洁
#11
优点:代码简捷
缺点:打断循环连续性
优点:代码量大
缺点:循环连续性强
C_C++高质量编程里面的东西
不过这个东西跟编译器的具体实现有很大关系,不要单纯的认为就是这样
缺点:打断循环连续性
优点:代码量大
缺点:循环连续性强
C_C++高质量编程里面的东西
不过这个东西跟编译器的具体实现有很大关系,不要单纯的认为就是这样
#12
晕,我就是这个答案哦,不过我想不到简洁也算答案,没写上去
#13
《高质量程序设计指南——C++/C语言》(第三版)第77页。
建议4-5:
如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断转移到循环体的外面。
建议4-5:
如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断转移到循环体的外面。
#14
这个是程序的优化问题,在编译器的内部,就有这样的优化,缩短编译时间,编译原理 或者 计算理论 里面好像有讲到的 。
#15
学习了~
#16
《高质量程序设计指南——C++/C语言》
电子版的哪里有?
电子版的哪里有?
#17
学习了……
#18
1.效率低但程序简洁
2.效率高但程序不简洁
1的程序比2多执行了N-1次逻辑判断。并且由于前者老要进行逻辑判断,打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。如果N非常大,最好采用2的写法,可以提高效率。如果N非常小,两者效率差别并不明显,采用1的写法比较好,因为程序更加简洁。
2.效率高但程序不简洁
1的程序比2多执行了N-1次逻辑判断。并且由于前者老要进行逻辑判断,打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。如果N非常大,最好采用2的写法,可以提高效率。如果N非常小,两者效率差别并不明显,采用1的写法比较好,因为程序更加简洁。
#19
很常见的一个比较~
#20
一个是在for循环加入判断语句 使得循环不连续 增大运行时间
另一个是在判断后执行for循环 虽然没有打断循环连续 但代码增加
如果是同样的逻辑的话 建议不在for循环中加判断
另一个是在判断后执行for循环 虽然没有打断循环连续 但代码增加
如果是同样的逻辑的话 建议不在for循环中加判断
#21
林锐其实是SB,他误导了多少新手。所以这道题出自他的手也不足为奇,稍微懂一点C++的人都能看的出,这两个逻辑有天壤之别!有可比性吗? 我拿一个视频算法和一个状态机谁去给我比比看?
#22
知道一点编译优化的就知道了,效率上确实是第2种高。循环中代码外提可以提高编译器对循环的流水线处理,参考编译原理界的“龙书”。
#23
其实这个就是循环内层和外层的大小的问题,C/C++编程规范里面的
#24
见解不错
#25
《高质量c++/c程序设计》
#26
应该是时间复杂度有关吧!,看下他们运行所需的时间,就知道区别了
#27
学习。。。
#28
受教了...
#29
《C++高质量编程》里面的例题
呵 面试的题目~
呵 面试的题目~
#30
可能会对性能有影响,
#31
这个逻辑确实不一样
#32
小弟不才,这程序逻辑怎么会不一样呢?
#33
学学排列和组合就知道了
#34
只是写了伪代码,两个程序完成的功能其实是一样的
第一个,代码清析,容易理解,缺点是每一次循环里都有比较,增加了程序空间复杂度;
第二个,代码相比第一个复杂一点,但循环里没有比较,降低了空间复杂度。
自己写程序时可做一个比较,如果你确知循环的上限在较少范围内,这种差异可以忽略不计时,可选择第一种易于阅读的,但如果循环上限未知的,或是循环上限比较大的,应该选择第二种
第一个,代码清析,容易理解,缺点是每一次循环里都有比较,增加了程序空间复杂度;
第二个,代码相比第一个复杂一点,但循环里没有比较,降低了空间复杂度。
自己写程序时可做一个比较,如果你确知循环的上限在较少范围内,这种差异可以忽略不计时,可选择第一种易于阅读的,但如果循环上限未知的,或是循环上限比较大的,应该选择第二种
#35
现代编译器对for循环的优化,都不需要关注它了。我想。
#36
逻辑一样的话,效率其实也差不了太远。不过更喜欢后一种。
#37
高质量程序设计指南——C++/C语言》word版本,后面的习题,主要从编译的角度来说明
#38
第一个,代码清析,容易理解,缺点是每一次循环里都有比较,增加了程序空间复杂度;
第二个,代码相比第一个复杂一点,但循环里没有比较,降低了空间复杂度。
第二个,代码相比第一个复杂一点,但循环里没有比较,降低了空间复杂度。
#39
没看过林锐的书。。。觉得这个问题挺那个的。
2段代码,实现不同的功能。。能说代码简洁。。
2段代码,实现不同的功能。。能说代码简洁。。
#40
学习了 学习了
#41
感觉像是面试题
#42
面试题总是从上面挖过来!
#43
多执行了个循环?!
#44
我今天去面试也做了这个题,以前没有遇到过,我考虑到在多线程情况下,condition会变化,那么第二种就有问题了,后面我又想到,如果在DoSomething里面改变了condition变量,就是希望下次执行DoOtherthing,第二种情况逻辑也是错误的。面试官直接给0分。
面试官应该不是搞技术的,其他题目就不说了,都是很教条式的考题,看了试题就叫我回去了。伤不起哦~~
面试官应该不是搞技术的,其他题目就不说了,都是很教条式的考题,看了试题就叫我回去了。伤不起哦~~
#45
我今天去面试也做了这个题,以前没有遇到过,我考虑到在多线程情况下,condition会变化,那么第二种就有问题了,后面我又想到,如果在DoSomething里面改变了condition变量,就是希望下次执行DoOtherthing,第二种情况逻辑也是错误的。面试官直接给0分。
面试官应该不是搞技术的,其他题目就不说了,都是很教条式的考题,看了试题就叫我回去了。伤不起哦~~
面试官应该不是搞技术的,其他题目就不说了,都是很教条式的考题,看了试题就叫我回去了。伤不起哦~~