永发信息网

问:下面程序:main (){int n =1;printf("%d %d %d \n",n,++n,n--) }为什么结果是2 2 1,而不是1 2 2?

答案:2  悬赏:70  手机版
解决时间 2021-01-26 09:46
  • 提问者网友:niaiwoma
  • 2021-01-26 05:41
问:下面程序:main (){int n =1;printf("%d %d %d \n",n,++n,n--) }为什么结果是2 2 1,而不是1 2 2?
最佳答案
  • 五星知识达人网友:野慌
  • 2021-01-26 05:58
printf是从右到左计算的。
麻烦采纳,谢谢!
全部回答
  • 1楼网友:雾月
  • 2021-01-26 07:28
C/C++标准没有规定函数参数的求值顺序。在序列点之间修改一个变量的值两次以上,这样的行为是未定义的,不同的编译器可能采用不同的求值顺序,有的可能从左到右,有的可能从右到左,甚至可能先中间后两边,先两边后中间。甚至同一个编译器在不同的优化,不同的上下文中都会采用不同的顺序,研究这样的顺序是,没有意义的,工作中写这样的代码可能有被辞退的危险。 详细资料可以搜索一下“序列点”,相关文章很多。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯