【C语言\自留记录】关于while程序段的理解

文章通过分析不同C语言代码示例,解释了赋值操作符`=`与等于判断操作符`==`的区别,特别是在while循环条件中的应用。当使用`k=0`作为循环条件时,由于赋值操作先执行,导致k变为0,使得循环条件立即变为false,因此有输出。而其他情况如`k==0`或`k==10`则遵循预期的循环逻辑。作者强调了理解赋值表达式自身返回值的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include "stdio.h"
int main()
{
    int k=10;
	while(k=0)
		k=k-1;
	printf("%d\n",k);
	return 0;
}

代码如上:一开始觉得是这是一段无限循环代码,但运行之后发现有输出,为0

开始思考为什么会有输出。后来多试了几段,代码和结果如下。

#include "stdio.h"
int main()
{
    int k=10;
	while(k=1)
		k=k-1;
	printf("%d\n",k);
	return 0;
}

这段无输出,为无限循环

#include "stdio.h"
int main()
{
    int k=10;
	while(k==0)
		k=k-1;
	printf("%d\n",k);
	return 0;
}

这段不执行while,输出为10

#include "stdio.h"
int main()
{
    int k=10;
	while(k==10)
		k=k-1;
	printf("%d\n",k);
	return 0;
}

这段执行一次,输出为9

上面三段都是顺着逻辑的,很好理解,是赋值类与关系式的区别。

但为什么给k赋值为0的时候会有输出呢?

思索半天后我猜想如下:k=0先给k赋值为0,并且使k=0这个表达式的值为0,于是while后面的表达式为0,跳出循环。

为了验证猜想编了如下代码:

#include "stdio.h"
int main()
{
    int k=10;
	printf("%d\n",k=0);
	return 0;
}

结果输出为0,满意退出~

最后总结出自己一直原来忽略的一点:赋值表达式的值=被赋值量的值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值