送30分,在线等。帮我分析一下这段代码,!!

来源:百度知道 编辑:UC知道 时间:2024/05/22 18:11:45
i=1;

m=i+++i-++i+--i+i+++i+++i;

经过编译我知道m=5;

但是我 不知道m=i+++i-++i+--i+i+++i+++i;这一串代码到底是如何执行的,比如每一个i的值是多少?它们是按照什么顺序进行执行的?
希望能够给我详细分析一下.
谢谢~~
是考试考到的一题,出个题还搞这么复杂,还让我们什么写程序么要简洁,易读性强,这不是纯心刁难我们嘛。

望后面的朋友能帮我分析下~~

经过测试,应该是等价于 m=(i++)+i-(++i)+(--i)+(i++)+(i++)+i;

但我还是弄不明白是怎么会等于5的。

哎,还是靠自己了,经过研究调试,发现:

i++还是++i还是--i还是i--,在同一个语句单位里都是先使用再自加,并且使用的都是本语句单位之前的i的值(i=1);待本语句单位执行完毕,才统计出i的值.

出这个考题的人可能是孔乙己的嫡传后代,可能会写五种以上的“茴香豆”的“茴”字。

学计算机语言的目的是写程序来计算机执行,只要你会写就行了,这个式子没有任何优势,它这样写在一行上的优点最多可能就是少几个分号和回车,无聊之极。

不会认这个表达式的人,并不一定写程序就差点,相反,会写这个的人不一定能写出个好的程序。

最后我说一下表达式里面的++和--在变量左右的问题,请看下面的最简单的情况:
i=1;
j=5;
k=i++ + --j;
语句执行之后,i为2,j为4,k为5,因为实际上执行的顺序是:
--j;
k=i+j;
i++;
对于++和--,懂了上面的例子就行了:++、--在变量左边的情况,先对变量执行++、--再计算表达式,右边的情况就计算表达式。

哎呀,简单,你不用这个代码就行了,我空间里面有代码,你去转载吧!QQ919754435

记得好像是++>+,-->-这个优先级

i=1;
j=5;
k=i++ + --j;
语句执行之后,i为2,j为4,k为5,因为实际上执行的顺序是:
--j;
k=i+j;
i++;
对于++和--,懂了上面的例子就行了:++、--在变量左边的情况,先对变量执行++、--再计算表达式,右边的情况就计算表达式。