整理来自CSDN论坛
最近遇到了这个面试题
int i=0;
int count =100;
for(i=0;i<count;i++)
{
//优化代码,使运行速度加快。
}
当时我想的是把for改成while,面试官说不对。
int count =100;
for(i=0;i<count;i++)
{
//优化代码,使运行速度加快。
}
答案是
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++的国际级标准规范;