我们都知道,在面试或者看别人代码的时候难免会看到这种i++,++i之类的用法,恶心程度可想而知。道理大家都懂,无非就是+1或者-1,但是混在一起就很迷糊,废话不多说,直接看题↑。题目就是标题,问的是sum的值。
这题的条件是这样的:
大家不要一上来就运行代码看答案啊!主要是理解方法。
package operator;
public class operatorDemo1 {
public static void main(String[] args) {
int c = 10;
int d = 5;
int sum = c++ + ++c - --d - ++d +1 +c--;
System.out.println(c);
System.out.println(d);
System.out.println(sum);
}
}
做这之前,记住一个方法就行,哪个在前面就哪个先!
先记录每一次变化的值,以后遇到这种问题都能迎刃而解!
//第一次(最初)
c = 10
d = 5
sum = c++ + ++c - --d - ++d +1 +c-- (不知道)
(这个大家可以用草稿纸写出来,方便理解,也可以自己搞个记事本)
1、先看sum的第一个,c++,心里默念:哪个在前面就哪个先!。c在前面,所以是先用,再加+。各个值变化记录,每一步(变化)都记下来:
//c从10变成了11
c = 10 11
d = 5
//注意c++是c在前面,所以直接用c(c的初始值是10,所以直接用),c的值再++变成了11。sum就变成了下面:
sum = 10 +++c - --d - ++d +1 +c–
2、继续往下看,到++c 心里默念:哪个在前面就哪个先!。++在前面,所以是先加+,再用。记录变化:
//++c,所以c先加1,变成12。然后再用,这就是所谓的++c,++在前,先加再用!
c = 10 11 12
d=5
//++c,++在前,先加(11+1=12),再用(12):
sum = 10 + 12 - --d - ++d +1 +c–
3、接着,到- -d。心里默念:哪个在前面就哪个先!。 - - 在前,所以是先减-,再用。记录变化:
c = 10 11 12
//- -d, - -在前,所以先减,5-1 = 4。减完再给sum用。
d = 5 4
//d减完变成4
sum = 10 + 12 - 4 - ++d +1 + c- -
4、继续看后面的++d。++在前,所以是先加+,再用。
c = 10 11 12
//++d,++在前,所以先加(4+1=5),再用。
d =5 4 5
sum = 10 + 12 - 4 - 5 + 1 + c- -
5、最后一个c - -。再次在心里想着:哪个在前面就哪个先!。c - -,c在前面,所以先用c,然后c再减。
//先用原来的12,给sum。然后再减,变成11
c = 10 11 12 11
d = 5 4 5
//c - - ,c在前面,所以是先用(原来的12),再减(12-1 = 11)
sum = 10 + 12 - 4 - 5 + 1 + 12
答案就算出来了,c = 11. d = 5. sum = 26。
这个时候再去运行程序:
怎么样,学废了吗?



