「C语言」C语言中赋值语句用于判断条件

C语言中赋值语句用于判断条件

上午在看C语言课程的时候,老师讲到了指针作为函数参数来实现字符串的copy()函数,然后使用for循环的时候提出了如下变式。

void copy_str24(char* from, char* to)
{
	while ((*to++ = *from++) != '\0'){}
	return;
}

也就是不断从from中取值然后赋值给to,直到赋值为\0的时候才停止,但是这个时候其实to中已经得到了from中的最后一位中的\0,因为C语言没有字符串这种数据类型,只能使用以\0结尾的字符数组作为字符串,而不以\0结尾的字符数组并不是字符串。

接下来,老师提出了新的变式:

void copy_str25(char* from, char* to)
{
	while ((*to++ = *from++)){}
	return;
}

这里是直接去掉了判断是否为\0的操作,那么这里如何理解呢?

实际上我这里还是偷懒了,因为这个疑问应该在上一个函数就提出来了。

那么,赋值语句作为判断条件是什么意思呢?它并不是以是否赋值成功作为truefalse的判断机制,而是看赋值的值是多少,如果为0自动就作为false

然后接下来我就进行了测试,当把数字0放到if中判断的话确实判断为false

但是字符'0'呢?

在这里插入图片描述

可以看到它是true的,其实在c语言中除了false 和 0 之外基本上都是true

字符数组中如果分配的空间多余字符的数目,后面是用0填充的,通过验证可以知道这里是数字0而不是字符0

在这里插入图片描述

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值