以文本方式查看主题

-  堕落街论坛  (http://duoluojie.1314179.com.cn:443/index.asp)
--  游戏体育  (http://duoluojie.1314179.com.cn:443/list.asp?boardid=331)
----  爱好编程的朋友,请进!  (http://duoluojie.1314179.com.cn:443/dispbbs.asp?boardid=331&id=4716)

--  作者:淡淡
--  发布时间:2003/9/22 13:02:00
--  爱好编程的朋友,请进!
大家能否告诉我为什么运行的结果是10? int i(1); i=(++i)+(++i)+(++i); cout<var reload=1;
--  作者:淡淡
--  发布时间:2003/9/22 13:05:00
--  
还有这个: int i,j; i=3; j=(i++)+(++i)+(i++); cout<<"i="<var reload=1;
--  作者:淡淡
--  发布时间:2003/9/22 13:27:00
--  
我们老师真够衰,居然出这样的题!! 别人问他,他说不知道。 这不是在整我们吗?
--  作者:libra01
--  发布时间:2003/9/23 17:43:00
--  
你这样的题的话,一般没有什么必要分析的。 为了展示C语言灵活性,这是一些编程技巧。告诉你C语言所不能。 一般来说,你只要上机实现一遍,跟踪调试一下,明白其实的区别就行了。 比如说 i++、++i.的区别。 从右到左结合,从左到右结合等特性就行了。
--  作者:libra01
--  发布时间:2003/9/23 17:47:00
--  
大家能否告诉我为什么运行的结果是10? int i(1); i=(++i)+(++i)+(++i); cout<var reload=1;
--  作者:blacktulip
--  发布时间:2003/9/24 15:19:00
--  
在c中自加自减的结合方向默认为自右向左,而算术运算符结合方向为自坐向右。 第一问的编译环境是什么? 在tc++中应该这样解释: 初值是1,++i的自加是在整个表达式求解一开始时最先进行的,先对i进行3次自加后i的值为4,然后进行i=4+4+4的运算,得12。 这种提起是很好分析,关键看编译环境,最主要是看结合方式方向,不同的系统处理方法不同。
--  作者:blacktulip
--  发布时间:2003/9/24 15:25:00
--  
而下面的运行结果为什么又是9呢? int i(1); int j; j=(++i);1 j+=(++i);2 j+=(++i);3 cout<var reload=1;
--  作者:淡淡
--  发布时间:2003/9/24 13:34:00
--  
呵,谢谢学长。
--  作者:淡淡
--  发布时间:2003/9/24 13:42:00
--  
晕呀,我没说tc呀,我是说tc++。 括号的优先级是最高的,=运算符是从右至左,但是后面是一个表达式吧。 +号的运算顺序是从左到右吧。
--  作者:淡淡
--  发布时间:2003/9/24 16:10:00
--  
vc6.0