i++和++i运算的区别
1.程序从左向右执行
程序是从左向右执行的
例如:
i=3
(1) a = i++
程序先执行到 i,所以先把 i 赋值给 a (此时 a 是3)
接着执行到++自增符号,对象是 i ,所以,i++变成4(此时 i 是4)
(2)a = ++i
程序先执行到++自增符号,对象是 i,所以,i++变成4 (此时i是4)
接着执行到 i,所以把 i 赋值给 a (此时a是4)
2.例子
(尚未学习底层硬件处理过程,知道有谬误,暂且如此理解)
例1:
public static void main(String[] args) {
int a = 5;
int b = 10;
int c = 0;
c = a++*--b; //给出题目的时候没有加括号,但自己写代码的时候要加。c = (a++)*(--b);
System.out.println(c);
}
c = (a++)*(- -b)
1.程序执行到a,使用a=5
2.程序执行到++自增符号,a变成6
3.程序执行到*
4.程序执行到–自减符号,b变成9
5.程序执行到b,使用b=9
6.故c=5*9=45
例2:
public static void main(String[] args) {
int e =5;
e+=e+++e++; //给出题目的时候没有加括号,但自己写代码的时候要加。e=e+(e++)+(e++);
System.out.println(e);
}
e=e+(e++)+(e++)
1.程序执行到e,使用e=5
2.程序执行到+ (e=5+)
3.程序执行到e,使用e=5 (e=5+5)
4.程序执行到++自增符号,对象是e,e变成6
5.程序执行到+ (e=5+5+)
6.程序执行到e,此时e是6 (e=5+5+6=16)
7.程序执行到++自增符号,对象是e,e变成7
8.程序执行赋值,e从7变成了16
9.故执行结果是16