i++ 和++i 的理解 以防面试
根本原理:
//模拟 a++ function afterAdd(){ var temp = a; a = a+1; return temp; } //模拟++a; function beforeAdd(){ a = a+1; return a; }
所以网上找了几个面试题,大家看看:
题目一:输出i的值是多少?
public void test(){ int i = 0; i=i++; System.out.println(i); }
题目二:输出y 和i的值分别是多少?
public class Test3 { public static void main(String[] args) { int y=0; int i =0; y=++y; y=++y; y=++y; y=++y; y=++y; System.out.println("y="+y); i=i++; i=i++; i=i++; i=i++; i=i++; System.out.println("i="+i); } }
第三题:js中 console.log出来的结果分别是什么
var a = 5,
b; b = a++ +1; console(b,a); a = 5; c = a-- + --a; console(c,a); a = 5; d = --a + a++; console(d,a);
第一题的答案是:0
第一题解析:i= i++;i++原理是:
int temp = i; i = i+1; return temp;
也就是说:i++执行的过程是:temp = 0; i=1;返回 temp ;即返回0;回到实际的代码里面:i=i++;即 i=0;
注意:这里原理里面的 i= i+1; 的最后i的结果被 实际的代码给覆盖掉了。所以这句话一直是被覆盖。
第二题答案:5,0
第二题的解析:++y,比较好理解,所以y=5; x的部分跟第一题是类似的;i++ 结果是 0,
int temp = i; //代入i int temp = 0; i = i+1;// 代入i i= 1 return temp;// 返回 0;
回到代码:
i=i++; 即 i=0;
重复多次后 i=0,所以 输出 i = 0;
第三题的答案:第一个console.long (b,a):6,6; 第二个:console.long (c,a):8,3 ;第二个:console.long (d,a):8,5
第三题的解析:b = a++ +1; a++ 的结果:即
int temp = a; //代入i int temp = 5; a = a+1;// 代入i i= 1 a = 5+1; 即a = 6; return temp;// 返回 5; 即 a++ 为 5;
a++的结果是5,所以 b = 5+1 所以=6;
a的结果是,6;
第二个:console.long (c,a) :c = a-- + --a; a--的结果
int temp = a; //代入i int temp = 5; a = a-1;// 代入i i= 1 a = a - 1; 即a = 4; return temp;// 返回 5; 即 a-- 为 5;
--a ,当前 a =4,--a 即 a= 3; 所以 c = 5+3 所以 c = 8,a = 3;
第二个:console.long (d,a) :d = --a + a++; --a的结果,4; a++的结果:
int temp = a; //代入i int temp = 4; a = a+1;// 代入i i= 1 a = 4 + 1; 即a = 5; return temp;// 返回 4; 即 a++为 4;
a++ 为 4,d= 4+4 所以d=8 a = 5;
博客园地址:https://www.cnblogs.com/lixiuming521125/