概述
下面这段代码我们都很熟悉
#include <stdio.h>
int main()
{
int n=5;
while(n)
{
n=n-1;
}
printf("%dn",n);
return 0;
}
它的输出结果为0.
再看下面这一段代码:
#include <stdio.h>
int main()
{
int n=5;
while(n--)
{
;
}
printf("%dn",n);
return 0;
}
它的输出结果却是-1.
很多人都认为这两段代码是等价的,我之前也误认为它们等价,但是实验证明这不是等价的。
第二段代码中,while(n--),当n=0时,并没有马上跳过循环条件和循环体,而是将循环条件执行完再跳过循环体。
原因:n--是一个整体,从编译器gcc角度看,先将n赋值给一个临时变量,然后自身减去1,返回的不是n而是临时变量。此时临时变量0,n为-1。故n--操作是一个整体,必须完整的执行完,不是割裂看的。之前,我误认为while中判断n为0时就直接结束。
最后
以上就是炙热玉米为你收集整理的你真的了解while(n--)吗?的全部内容,希望文章能够帮你解决你真的了解while(n--)吗?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复