c语言取最小值赋值给t,C语言中*s++ = *t++ 是怎么一种赋值过程

0318385114cb60bb53b3075eebcb2fbc.png

浮云间

首先是*s=*t;然后判断整个表达式的值是否为真,即*s!=0满足,则继续循环,否则终止不论循环继续与否,接下来要执行s+=1;t+=1;//s先自增还是t先自增在这里是无关紧要的=================================回答评论中补充的问题,程序怎么读优先级表我就不贴了,百度一大堆,核心是你要理解下面流程中的5.2编译器解析到*,判断为指针运算符号,需要一个标示符或者表达式解析到s,是一个合法的标示符,继续搜索是否有更高优先级的运算符继续解析到++,由于*与++是同一优先级,结合性为右到左,所以等同于*(s++)然后是=,判断为赋值运算符,优先级比++低,因此前面的部分可以直接进行计算那么*(s++)怎么计算?拆解成expr1=s++;expr2=*expr1;首先是expr1=s++,后置++的含义是先使用变量/表达式的值、再自增,表达式s++的计算结果就是s的值,计算完毕后,s自增1,也就是说假如s=1,那么s++这个表达式的计算结果就是1,expr1=1,计算完毕后,s的值自增1变为2,但不影响之前已经计算完毕的表达式然后计算expr2=*expr1,按照上面所举的例子,此时s=2,expr2=*1然后继续=的计算,由于赋值运算符是双目运算,需要一个右目表达式,继续解析后面*的优先级比=高,因此先计算*t++,原理同上然后计算赋值表达式的值,没错!赋值表达式也是表达式,它也有计算结果,它的计算结果就是右边表达式计算结果,表达式a=b的值就是b计算完毕后,执行while的功能,判断表达式计算结果是否为真,也就是是否非0略

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值