我是靠谱客的博主 炙热玉米,这篇文章主要介绍你真的了解while(n--)吗?,现在分享给大家,希望可以做个参考。

下面这段代码我们都很熟悉

#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--)吗?的全部内容,更多相关你真内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部