while(1);while(2)是什么意思思?

while(1) 和 for(;;)它们不都是无限循环吗,作用应该一样啊,它们到底有什么区别?

要回答这个问题,其实你各自编写一段while(1) 和 for(;;)的代码,编译对比一下代码大小和汇编文件,你就大概知道了。

),我们将及时更正、删除,谢谢。

要回答这个问题,其实你各自编写一段while(1) 和 for(;;)的代码,编译对比一下代码大小和汇编文件,你就大概知道了。

while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。其执行过程可用下图表示:

1.先求解表达式1 2.求解表达式2 若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第3)步; 若其值为假(0),则结束循环,转到第5)步。 3.求解表达式3 4.转回上面第2)步继续执行。 5.循环结束,执行for语句下面的一个语句。

执行过程可用下图表示:

这里先说一下结论,然后再验证验证结论。

1.相同点作用和效果都一样:都是实现无限循环的功能。

2.不同点while(1):其中括号里面是一个条件,程序会判断真假。而括号里面的“1”永远是一个“真值”。

其中,每一次循环,编译器都要判断常量1是不是等于零。

for(;;):这两个;;空语句,编译器一般会优化掉的,直接进入死循环。

根据上面的描述,你可能会觉得:while(1) 比 for(;;) 要做更多事,汇编代码更多,代码量也更大。

但事实是这样吗?下面验证一下。

我们编写分别两个文件for.c和while.c,然后分别生成汇编代码,看下情况。

2.生成汇编我们这里使用gcc编译器生成汇编,执行命令如下:

你会发现,除了文件名不同,其余都相同。

当然,这里额外说一下, 不同代码、不同编译器,以及不同优化等级,可能最终结果有所差异。

重磅!程序员交流群已成立

公众号运营至今,离不开小伙伴们的支持。

为了给小伙伴们提供一个互相交流的平台,特地开通了程序员交流群

群里有不少技术大神,不时会分享一些技术要点,更有一些资源收藏爱好者不时分享一些优质的学习资料。(群完全免费,不广告不卖课!)

需要进群的朋友,可长按扫描下方二维码。

我要回帖

更多关于 while(2)是什么意思 的文章

 

随机推荐