我是靠谱客的博主 炙热玉米,最近开发中收集的这篇文章主要介绍你真的了解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--)吗?的全部内容,希望文章能够帮你解决你真的了解while(n--)吗?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部