一道c语言阅读程序题 求大神

intfun(intfirst,intsecond){returnfirst++*second++;}main(){intp=1,r;r=p+++fun(p++,p++)... int fun(int first , int second)
{
 return first++*second++;
}
main( ){
int p=1 , r;

r=p+++fun(p++ , p++);

printf("%d\n“ , r );
}
用cfree运行的答案是5
奇怪的是 为什么传递给fun的参数是first=3 second=1;
求问大神!!我觉得应该是 first=2 second=3啊啊啊!!
展开
 我来答
kevin_room
2013-06-28 · TA获得超过132个赞
知道小有建树答主
回答量:156
采纳率:100%
帮助的人:87万
展开全部
C语言函数参数入栈顺序为从右至左,所以fun的参数是(2,1)或者f(3,2)
还有就是+两边的表达式执行顺序是未定义的(编译器实现不一样),所以有2种可能
r为5或者7
你测试吧,肯定对的,不测试不要反驳我
更多追问追答
追问
我添加断点看了
参数是fun(3,1)啊!!神逻辑啊。真是神逻辑。。理解不能啊。我也觉得2,1可以理解 那个3,1是怎么回事!
追答
r=p+++fun(p++ , p++);你把这句改成r=fun(p++ , p++);看看传入的是什么?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式