for( ; ; )
for(; ;)循环是C语言作者推荐的标准方法,同时还是C++作者推荐的标准方法。省略了循环条件,表示无条件循环。在该写循环条件地方,不写条件,不写就是没有,含义自然就是无条件循环,从语义上讲for(; ;)循环显然更符合语义。
while(1)
while(1)在某些编译器会报警告的。在该写循环条件时写1,可能会被认为是输入恒真表达式而给警告。在不加编译优化的情况下,while 的用法在某些老旧的编译器中会导致强行与1比较一次。而 for 循环的这种形式永远会被编译器正确识别为无条件循环。当然,他们在编译器上的区别一般可以忽略不计。for 循环只是在语义上对程序员更友好,含义为 forever ,而 while 循环则难以用英文读出其含义。
为什么总有人说for( ; ; ) 比 while(1)要好?
难道说执行效率变高了?
void main()
{
for(;;);
}
void main()
{
while(1);
}
测试一下这两个代码,看看会各自生成几条汇编语句,便可知晓效率高低
1、使用 交叉编译器 arm-linux-gcc
这里二者都是一个跳转指令,并没有条件判断
2、使用x86 gcc
也仅仅是一个跳转指令