int i=3;
i=(++i)+(++i)+(++i)+(--i)=21;
i=1+(++i)+(++i)+(++i)+(--i)=21;
请问这是为什么?
我也是新手,不能很好的回答你的问题;
但是,有几点我是知道的,可以提示你;
1、=是赋值运算符,并非是恒等==;int i=3和int i==3是不同的,第一个是赋初始值3,是变量,既然是变量那么值就并非唯一的;而第二个就是我们数学上的表示i的值等于3,这个是不变的值。
2、你得清楚知道代码中的运算符和数学运算符上有着习惯上的不同,首先是优先级,其次是结合性,同级运算使用结合性,例如有两个赋值运算符,那么这两个就具有从结合性上考虑的先后顺序;
3、至于有关于自增运算符的前置和后置,我想你大概也清楚;
我知道的就这么多,回答不了你的问题,但是我想多少对你也有点提示,老师应该会回答你的,我也会关注的!
第一项是数字还是++i很重要,第一个表达式(++i)+(++i)+(++i)+(--i)中,因为++i的优先级高,所以首先计算++i,第一个++i为4,第二个++i,i的值为5,然后再来计算第一个加号,注意这时i已经等于5了,所以5+5=10,第三个++i为6,10+6=16,--i为5,16+5=21,21是第一个表达式的值。
第二个表达式1+(++i)+(++i)+(++i)+(--i),那么第一个++i是4,1+4=5;第二个++i为5,5+5=10;第三个++i为6,10+6=16;最后--i为5,16+5=21。第二个表达式的值是21。