永发信息网

求高手解释,在++运算中, int j =1;j= (j++)+(++j); printf("%d",j);输出结果为什么为5

答案:3  悬赏:0  手机版
解决时间 2021-02-25 00:08
求高手解释,在++运算中, int j =1;j= (j++)+(++j); printf("%d",j);输出结果为什么为5
最佳答案
这种容易引起歧义的语句最好避免使用。本身这种语句,在不同的编译器下的定义不同。
下面是在Dev C++下的运行结果:

全部回答
因为++这个自增运算符分两类,一个是前置,一个是后置,比如 a = b++;和a = ++b;两个实现的鲜果都是将b赋值给a,但是前置的++b会先运算b = b + 1;然后再试a = b;而后置的b++会先运算a = b;再进行b的自增b = b + 1;所以,如果b = 3的话,a = b++;a = 3; b = 4;但是a = ++b;的话a和b都为4
而关于你后面问的int j =1,a=0;a= (j++)+(++j); printf("%d",a);为什么a没自增的问题,因为自增的是j,不是a。。。
j++是先运算后自增,++j是先自增后运算。

int j =1;j= (j++)+(++j); printf("%d",j);中j++的自增运算暂时会被搁置,此时 j 还是1;但是++j会提前自增使 j 变成2。因为两边括号里的 j 是同一个变量,所以左右括号里的 j 都是 2 结果相加为4,将4又赋值给了 j ,j 变成了4。最后运行之前被搁置的 j++,也就是4+1=5。

int j =1,a=0;a= (j++)+(++j); printf("%d",a); a没有自增追问为什么最后又运行之前被搁置的 j++,和++算式符号的函数原型有关吗
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
大连高铁车票,不去车站取票在个个代售点取票
华美娱乐会所地址在什么地方,想过去办事
淘宝转化率是怎么计算的啊?
北京开棋牌桌游需要营业执照么?好办么?
"年年相见在他乡"的全诗内容是?
和出轨老公初夜怎么过
上海大众实业有限公司属于上海大众么?干什么
请问I thought(think过去式)后面加从句that
战略规划小组一般由哪些部门组成
电话手表充电多长时间电
我表哥近16岁,邻居家的小女孩11岁,每次小女
青岛到郑州有多远
请问费用单上面的THC,ORC,麻烦,
南流国土资源所怎么去啊,有知道地址的么
夏天,在杯子里放上冰块,常会看到杯子有“出汗
推荐资讯
旅行社的英文是什么
请教一下CD的码率
洪园社区居委会地址有知道的么?有点事想过去
悠百佳NO.9183我想知道这个在什么地方
—do you usually go to school? —By bus.A.
【眼睛的睛怎么组词】睛字怎么组词!眼睛不是
新兴社区(东南门)地址在什么地方,想过去办事
广州白云山有多高
不满五年已购公房179万 各项税费是多少
买电动车需要了解什么
今天派送中的快递有没有可能明天才来
上海闲益网络科技有限公司怎么样?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?