18、i++ 和 ++i 详解
1、参考链接:https://blog.csdn.net/song854601134/article/details/111291272?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164698445016780274194665%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=164698445016780274194665&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-111291272.first_rank_v2_pc_rank_v29_v2&utm_term=i%2B%2B&spm=1018.2226.3001.4187
首先我们要明白,无论是++在前还是++在后,都是先自增,然后就是赋值的不同,
++i : 先自增,后赋值
i++ : 并不是我们传统意义上的认识,先赋值,在自增(这是错误的),他其实也是先自增,然后再赋值(赋的是之前的值)
示例1:
int i = 0;
i = i++;
System.out.println("i = " + i);
详解:初始时 i 是0 ,i 在自增之后值是1,但是赋值是i之前的值,所以i=0;自增操作没有起到作用
示例2:
public static void main(String[] args) {
int i = 0;
int x = 0;
while (i < 10) {
x = x++;
i++;
}
System.out.println(x);
}
明白第一个例子的话,这个的话就比较简单了
每次循环i的值都是初始值0,自增并没有起到效果,所以输出是 0
示例3:
int a = 2;
int b = (3 * a++) + a;
System.out.println(b);
这涉及到运算的数序,其实加减运算都是从左----->右执行的,并不是存在说,我先算括号里面的
1、 左边括号:3*2
2、a自增,a变成了3
3、右边是3
示例4:
int a = 2;
int b = a + (3 * a++);
System.out.println(b);
1、左边 : a = 2
2、右边括号: 3*2
3、a自增,a = 3
真正的表达式是:2+3*2
总结:
i++ 即后加加,原理是:先自增,然后返回自增之前的值
++i 即前加加,原理是:先自增,然后返回自增之后的值
一个变量也是表达式,多个表达式的加减法运算都是从左到右进行的