首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

面试遇到的有关问题

2012-04-10 
面试遇到的问题以下程序有何利弊C/C++ codefor(....){if(...)conditionelsecondition}//另一个if(...)fo

面试遇到的问题
以下程序有何利弊

C/C++ code
for(....){  if(...)    condition;  else    condition;}//另一个if(...)  for(....)    condition;else  for(....)    condition; 


求解

[解决办法]
老题了,第一个逻辑明确,但循环内存在分支可能会降低缓存命中率,降低效率

第二个正好相反

其实无所谓,有些编译器优化过之后二者速度一样的,你除非测试过你的开发平台确实速度差异很大(注意要加优化,debug版测试来的速度没有任何参考价值),否则别做过早的代码优化,真正能起到优化代码作用的,时间少手动内存分配次数,优化IO策略,应用更好的算法等
[解决办法]
高质量C++编程里的
前者可读性好,效率略逊于后者;
后者可读性逊于前者,效率高于前者。
[解决办法]
C/C++ code
                1 在循环里面进行判断        使得程序不停地进行循环时要执行判断          影响效率 程序员易读,不利于编译器优化        2 在循环外面进行判断        判断之后直接进行循环 计算机最爱做的就是        重复循环工作 效率高,可读性差点,但有利于编译器优化。
[解决办法]
可读性一说不成立。在某些情况后者可读更好。这要看程序的真实逻辑。
[解决办法]
一个好看 逻辑清楚 ;另一个效率高!
[解决办法]
探讨
以下程序有何利弊
C/C++ code


for(....)
{
if(...)
condition;
else
condition;
}
//另一个
if(...)
for(....)
condition;
else
for(....)
condition;




求解

[解决办法]
代码量大的时候,代码的简洁清晰很重要,尤其维护的时候,这种数量级的效率差别根本不予考虑
[解决办法]
代码简洁性可以通过其他方式达到 效率才是硬道理
如果是一些机械的代码 又多又不得不写 规律又差不多
甚至可以也个生成代码的工具 自动生成
程序写得再好看 跑不起来也是白搭啊
当然 这代码两种随便写一般不会导致灾难性结果
[解决办法]
探讨
来自高质量C/C++编程

C/C++ code

for (i=0; i<N; i++)
{
if (condition)
DoSomething();
else
DoOtherthing();
}
优点:程序简洁
缺点:多执行了N-1 次逻辑判断,并且
打断了循环“流水线”作业,使得编译
器不能对循环进行优化处理,降低了效
率。

if (cond……

[解决办法]
这个只是效率稍有差异。
[解决办法]
一易读但效率低
二效率高但不易读...
[解决办法]
提醒:条件有时在循环过程中是会发生改变的。
[解决办法]
探讨
以下程序有何利弊
C/C++ code


for(....)
{
if(...)
condition;
else
condition;
}
//另一个
if(...)
for(....)
condition;
else
for(....)
condition;




求解

热点排行
Bad Request.