i++ 和 ++i 详解

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 即前加加,原理是:先自增,然后返回自增之后的值
一个变量也是表达式,多个表达式的加减法运算都是从左到右进行的


版权声明:本文为weixin_43987718原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。