for和while区别

来源:互联网 发布:全职美工招聘 编辑:程序博客网 时间:2024/06/06 03:28

整理来自CSDN论坛


最近遇到了这个面试题

 int i=0;
int count =100;
for(i=0;i<count;i++)
{
//优化代码,使运行速度加快。
}
当时我想的是把for改成while,面试官说不对。

答案是

int i;
for(i=0; i<100; i++)
{

//

}

减少了赋值的过程

================

http://bbs.csdn.net/topics/370250454?page=2

================

while (1)
//00D5138E  mov         eax,1 
//00D51393  test        eax,eax 
//00D51395  je          main+29h (0D51399h) 
;
//00D51397  jmp         main+1Eh (0D5138Eh) 


        for ( ; ;)
;
//00D51399  jmp         main+29h (0D51399h) 

for(;;)编译成汇编后是无条件转移,while(1)是要0和1进行一下比较的,所以从这个方向上看for(;;)是要比while(1)快的因为少了一个比较指令,但现在的编译器都是有一定的优化能力的,像while(1)这种会优化成和for(;;)一样的汇编代码。


理论上for的效率比while高。

嵌入式代码对C/C++写法要求很高,建议有基础的朋友们阅读阅读MISRA-C2004, 2008 和一些C++的国际级标准规范;


0 0
原创粉丝点击