黑马程序员技术交流社区

标题: 关于自运算。。。 [打印本页]

作者: 帅飞    时间: 2014-5-2 19:28
标题: 关于自运算。。。
本帖最后由 帅飞 于 2014-5-4 02:50 编辑

//先定义两个int变量a=3,和b,然后让b=a++,输出a和b,结果为4和3

class Mo
{
        public static void main(String[] args)
                {

                int a=3,b;
                b=a++;
                System.out.println(a);
                System.out.println(b);

                }
}

————————————————————————————————————————————
//先定义int变量a=3,b,c,然后运算b=a++,c=++a,输出a,b和c,结果为 5,3,5


class Mo
{
        public static void main(String[] args)
                {

                int a=3,b,c;
                b=a++;
                c=++a;
                System.out.println(a);
                System.out.println(b);
                System.out.println(c);

                }
}
————————————————————————————————————————————
//先定义int变量a=3,b,c,然后运算c=++a,b=a++,输出a,b和c,结果为 5,4,4

class Mo
{
        public static void main(String[] args)
                {

                int a=3,b,c;
                c=++a;
                b=a++;
               
                System.out.println(a);
                System.out.println(b);
                System.out.println(c);

                }
}


——————————————————————————————————————————————


不知道这个结果是为什么?请大神指教。。。
自己已经弄懂了,,想彻底搞懂自运算? 看看这个帖子中我的回复吧!【http://bbs.itheima.com/thread-116532-1-1.html







作者: skill20    时间: 2014-5-2 19:33
  1. class Mo
  2. {
  3.         public static void main(String[] args)
  4.                 {

  5.                 int a=3,b,c;
  6.                 b=a++;   这里执行一次, b = 3;a = 4;
  7.                 c=++a; 到这就是 a 先自增 a = 5,再赋值给c ,c = 5;
  8.                 System.out.println(a);
  9.                 System.out.println(b);
  10.                 System.out.println(c);

  11.                 }
  12. }
复制代码

作者: 帅飞    时间: 2014-5-2 19:39
skill20 发表于 2014-5-2 19:33

应该是逐行运算,有累加效果,,相当于a进行两次自增运算,,,
作者: 刘晶    时间: 2014-5-2 19:40
class Mo
{
        public static void main(String[] args)
                {

                int a=3,b,c;
                b=a++;                 //把a赋值给b,b=3,a自加一,a=4;
                c=++a;                 //++a先自加一再赋值所以a为5,c为5
                System.out.println(a);
                System.out.println(b);
                System.out.println(c);

                }
}a++是先处理其他运算,然后a再自加; 而++a则是先处理a自加运算,再处理其他表达式运算; 如果只是单纯的表达式a++;或者是++a;这两个表达式的结果就没什么区别。

作者: 帅飞    时间: 2014-5-2 19:42
刘晶 发表于 2014-5-2 19:40
class Mo
{
        public static void main(String[] args)

刚刚搞懂,,谢谢哈
:)
作者: 帅飞    时间: 2014-5-2 19:45
刘晶 发表于 2014-5-2 19:40
class Mo
{
        public static void main(String[] args)

总之,相当于a进行了两次自增运算,是吗?

作者: 刘晶    时间: 2014-5-2 19:50
可以这样说
作者: 帅飞    时间: 2014-5-2 23:36
是第二天的视频里的,,我看完之后自己运算的结果,,,有点小疑惑,,,当然了,,问题在于,,a=3,b=a++,c=++a,a在第一次自加运算(b=a++)后,存储为4,然后又进行了一次(c=++a)变成了5、、、现在懂了,谢谢哈。
作者: 邵景伦    时间: 2014-5-3 16:25
class Mo
{
        public static void main(String[] args)
                {

                int a=3,b,c;
                c=++a;//a自增为4;赋值给c
                b=a++;//4赋值给b,再自增为5
               
                System.out.println(a);//5
                System.out.println(b);//4
                System.out.println(c);//4

                }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2