首页 新闻 会员 周边

关于++运算符的困惑。

0
悬赏园豆:10 [已关闭问题]
&nbsp;&nbsp;&nbsp; int i=3,j=3;<br>&nbsp;&nbsp; &nbsp;printf("%d,%d,%d,%d\n",i++,i++,++i,++i);<br>&nbsp;&nbsp; &nbsp;cout&lt;&lt;j++&lt;&lt;j++&lt;&lt;++j&lt;&lt;++j&lt;&lt;endl;<br><br>在Visual Studio 2008 中作为C++ 控制台程序编译 输出结果:<br>5,5,5,5<br>5577<br>
问题补充: 谁能解释一下为什么是这个结果?谢谢!!
smwikipedia的主页 smwikipedia | 初学一级 | 园豆:160
提问于:2008-06-25 21:08
< >
分享
其他回答(3)
0
把一个语句写成多行,用调试器调一下不就知道了.
deerchao | 园豆:8367 (大侠五级) | 2008-06-25 21:17
0
应该是函数调用的时间问题 printf是先对必须求值的都求值,然后再调用函数进行打印 这里++i,++i必须求值 所以两次自加运算后为5,而i++不用求值,故调用打印函数时i的值为5 第二个语句我的理解是 整个语句先搜索必须求值的进行求值,于是++i,++i之后i为5,然后调用打印 于是打印i++,i++之后i值为7,故输出为5577
花生1 | 园豆:872 (小虾三级) | 2008-06-25 22:01
0
单步调试,挨个查看,即时的值......
Jared.Nie | 园豆:1940 (小虾三级) | 2008-06-26 10:01
0
去掉endl试一下
chengxu | 园豆:195 (初学一级) | 2008-06-26 18:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册