为了账号安全,请及时绑定邮箱和手机立即绑定

关于下面的 “b=func(++i,++i,i);”为什么是从右向左开始算的?何解?

关于下面的 “b=func(++i,++i,i);”为什么是从右向左开始算的?何解?

慕婉清6462132 2022-03-23 19:15:27
#include<stdio.h>void main(){int func(int x,int y ,int z);int i=3,b;b=func(++i,++i,i);printf("%d\n",b);}int func(int x,int y,int z){printf("%d %d %d\n",x,y,z);return(x+y+z);}
查看完整描述

3 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

因为函数参数的子表达式运算次序标准并没有限定,各个编译程序能够自行决定,vc一般从右往左算,Tc一般从左往右算

查看完整回答
反对 回复 2022-03-28
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

5,4,3,12这是运算结果,我用的是C-FREE,5,5,5,15这是VS2010运算的结果,问题就出在编译器的问题了,所以这个不是我们认为的问题了

查看完整回答
反对 回复 2022-03-28
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

按我的理解,函数参数的运算次序应该跟b=j++,j++,j++;是一样的,都是从右到左。

查看完整回答
反对 回复 2022-03-28
  • 3 回答
  • 0 关注
  • 141 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信