在C/C++中为什么经常看到for( ; ; )这样的语句,而不直接用while(1)?

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

在这里插入图片描述
也仅仅是一个跳转指令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值