b=a++和b=++a区别及a=++a、a=a++区别

2023-04-24 15:58:59

b=a++是先把a的值赋给b,然后a自加1;
b=++a是a先自加1,在把值赋给b

b=a++

public static void a(){
        int a=1;
        int b=1;
        for(int i=0;i<5;i++){
            b=a++;
        }
        System.out.println("a="+a);
        System.out.println("b="+b);
    }

 最后得到的结果:  a=6;b=5

b=++a

public static void b(){

        int a=1;
        int b=1;
        for(int i=0;i<5;i++){
            b=++a;
        }
        System.out.println("a="+a);
        System.out.println("b="+b);
    }

最后得到的结果:  a=6;b=6

a++++a 

a++++a 都是自增运算符,俩者的区别在于对变量a的值进行自增的时机不同

==> a++是先取值后自增; ++a是先自增后取值。

例如 x = 3;

(x++)+(++x) = 8;

解=> x++此时取值为3,而后自增令x=4,那么参与++x的初始值x为4,则在自增后取值为5

所以,3+5=8

看以下例题1:

var a=10 ; b=20; c=4; 求++b+c+a++的值

++b=21;a++=10;c=4; => ++b+c+a++=21+4+10=35;

例题2:var a=10, b=20 , c=30;
                ++a;//①
                a++;//②
                e=++a+(++b)+(c++)+a++;//③
                alert(e);

①=> a=11(自增后取值为11);  ②=> a=11(直接取值,此时a在下次运算时自增值为12); 

③=> ++a=13 ++b=21 c++ = 30 a++=13

所以e=77

练习题:

 public static void c(){
        int a=0;
        int b=0;
        for(int i=0;i<5;i++){
            b=a++;	//-------1(i=0 b=0,a=1)
            a=a++;  //-------2
        }
        System.out.println("a="+a);
        System.out.println("b="+b);
    }

最后得到的结果:  a=5;b=4

在以上代码中出现了a=a++;

当执行到第2步时,与b=a++;和b=++a;有点区别,根据 a++++a   例题1/2 ,当a++执行完(a+1=2时)要赋值给变量a的时候,把暂时的数据拿出来,赋给变量a。等于2的结果被覆盖。所以当执行到练习的第2步时,a=1而不是a=2。

  • 作者:大渔歌_
  • 原文链接:https://blog.csdn.net/gqg_guan/article/details/127966394
    更新时间:2023-04-24 15:58:59