请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

printf()运算问题

https://img1.sycdn.imooc.com//szimg/60a0f4a309c84f7a10380400.jpg

https://img1.sycdn.imooc.com//szimg/60a0f4c3096d42d114120785.jpg

老师,这个运行结果怎么不是4,5,2呀!居然是8,8,2,有点不明白是怎么算出来的

正在回答 回答被采纳积分+3

2回答

提问者 LoongDB 2021-05-16 18:40:48

这是一个练习题上面的,我用的MinGW编译器

0 回复 有任何疑惑可以回复我~
  • 你换msvc看看有没有惊喜
    回复 有任何疑惑可以回复我~ 2021-05-16 18:41:18
bennyhuo 2021-05-16 18:39:24

换个编译器就有可能不一样。涉及到表达式的求值顺序的问题,自己写代码千万不要这么写。

0 回复 有任何疑惑可以回复我~
  • 提问者 LoongDB #1
    那MinGW是怎么运算出来这个结果的呀?!感觉怎么也算不出882的结果呀[哭笑]
    回复 有任何疑惑可以回复我~ 2021-05-16 18:43:24
  • bennyhuo 回复 提问者 LoongDB #2
    很多编译器求值都是从后往前的,所以不奇怪。
    
    先 i++,取当前值2,然后i改为3,
    再++i,i成为3,由于这里传参传的是i,所以也受到了 i *= 2的影响,参数全部求值完成以后 相当于传参 i, i, 2,而 i已经是8了。
    
    但这没啥意义,谁敢在项目里这么写代码,一定会被揍的。
    回复 有任何疑惑可以回复我~ 2021-05-16 18:49:24

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信