【C语言学习疑难杂症】第7期:函数参数的处理过程

本文探讨C语言中函数参数处理的过程,通过实例代码解释了参数从右往左压栈的规则。分析了表达式如a==(b==c)、a==(b=c)、a=b==c和a=b=c的执行步骤,揭示了赋值运算符和比较运算符的优先级及效果,最终得出不同表达式对变量a的影响。
摘要由CSDN通过智能技术生成

先看下如下代码: 

int main()

{

int a = 1, b = 2, c = 3;

printf("%d %d %d %d",a=b=c,a=b==c,a==(b=c),a==(b==c));// 3 3 0 0

return 0;

}

对于这个代码的理解:

首先在C语言中,函数调用的时候,会把参数压栈,压栈的过程是从右往左处理,在此之前需要先计算需要压栈的具体的值:

a==(b==c)

b==c因为b和c的结果不同,所以这个表达式结果为假,即0。再判断a==0,a为1,所以两值不等,整个表达式结果为0

a==(b=c)

首先把c赋值给b,所以b此时结果为3。小括号表达式结果也为3,a==3为假,结果为0

a=b==c

  ==比较b和c,上次计算b已经为3了,c也为3,所以相等,表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

9号信箱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值