黑马程序员技术交流社区

标题: 求b1,b2具体的运算步骤。谢谢! [打印本页]

作者: JSZMT黑马    时间: 2015-2-1 17:10
标题: 求b1,b2具体的运算步骤。谢谢!
本帖最后由 JSZMT黑马 于 2015-2-2 13:19 编辑

int a=3,b1,b2;
b1=(a++) +(a++);

a=3;


b2=(a++)+ (++a);
求解b1,b2分别是怎么运算的




作者: Ren    时间: 2015-2-1 17:57
不一样! b2 是a + (++1),
作者: xiaozhong    时间: 2015-2-1 20:49
不一样,b2中的a是在b1运算后的,b1=4,b2=5
作者: challenge    时间: 2015-2-1 21:37
a++和(a++)的运算方式是一样的。
(1)如果程序为
int a = 3,b1,b2;
b1=(a++) +1 //先拿a和1相加赋给b1,a再自加变为4。
b2=a++ +1 //先拿a和1相加赋给b2,a再自加变为5。
结果b1 = 4,b2 = 5。
(2)如果程序为
1. int a = 3,b1;
   b1 = (a++)+1;//先拿a和1相加赋给b1,a再自加变为4。
2. int a = 3,b2;
   b2 = a++ +1;//先拿a和1相加赋给b2,a再自加变为4。
结果:b1 = b2 =4。
我觉得有时自己可以编个小程序测一下,寻找一下答案。
我编了一个小程序。
int a = 3,b1,b2;
int b = 3;
b1 =(a++);
b2 = b++;
System.out.println("b1="+b1);
System.out.println("b2="+b2);
最后输出的结果:
b1 = 3;
b2 = 3;
所以我觉得(a++)和a++运算方式是相同的。
作者: 赵涛涛    时间: 2015-2-1 22:23
不一样,b1的值算出后,a会自加1,所以a的值已经改变了,b2与b1的值也就不一样了
作者: 840800102    时间: 2015-2-1 22:35
int a=3,b1,b2;
b1=(a++) +1
b2=a++ +1


class Get
{
        public static void main(String[] args)
        {
                int a=3,b1,b2;


                b1 = (a++) +1;
                System.out.println("b1="+b1);
                System.out.println("a="+a);
                printHr();


                b2 = a++ +1;
                System.out.println("b2="+b1);
                System.out.println("b2a="+a);
                printHr();

        }
        public static void printHr()
        {
                System.out.println("---------------------------------------------");
        }
}

结果是:
b1=4
a=4
---------------
b2=4
a=5

按照复你的代码,其实两个B的值一样,区别的是a的值不同,。
作者: 朱智彪    时间: 2015-2-1 23:14
b1=4,b2=5.
作者: JSZMT黑马    时间: 2015-2-2 00:46
明白了,运算方式应该是一样的。我还想问下:
int a=3,b1,b2;
b1=(a++)+(a++)
a=3
b2=(a++)+(++a)
求解!我想知道具体的运算步骤是怎样的,谢谢!
作者: JSZMT黑马    时间: 2015-2-2 13:15
840800102 发表于 2015-2-1 22:35
int a=3,b1,b2;
b1=(a++) +1
b2=a++ +1

你的代码b2写成b1。
               b2 = a++ +1;
                System.out.println("b2="+b1);
应该是
       System.out.println("b2="+b2);
请问下你知道(a++)+(++a)是怎么运算的不
作者: wtjohn    时间: 2015-2-2 13:49
b1 = 3 + (3+1)
b2 = 3 +( (3+1)+1)
作者: 840800102    时间: 2015-2-4 21:56
JSZMT黑马 发表于 2015-2-2 13:15
你的代码b2写成b1。
               b2 = a++ +1;
                System.out.println("b2="+b1);

(a++)   +   (++a )  
你这样括号了是没区别的 。
++a与a++的区别是
比如:
b1=a++;b2=++a
b1的是。a先赋值给b1 然后a自己在自增。
b2的是。a先自增,在赋值给b2      
这两个中a的值是一定自增的 。 区别是B的值。到底是a先赋值给B还是自增后在赋值给B

作者: 840800102    时间: 2015-2-4 21:57
JSZMT黑马 发表于 2015-2-2 13:15
你的代码b2写成b1。
               b2 = a++ +1;
                System.out.println("b2="+b1);

一下没注意吧这个写错了 。。 。。 :L。
作者: zhu405557524    时间: 2015-2-4 22:35
b1 =a++ + a++;相当于 b1 = 3+4=7;;为什么是3+4呢.第二个a 已经是a++过后的数,所以是4.
b2= a++ + ++a;相当于b2 = 3+5=8;第二a- ++a,在第一个a++后,变成4了。。但是++a是先把a加1再进行计算。。4+1=5.。所以 b2 = 3+5=8;
作者: O(∩_∩)O~wen    时间: 2015-2-5 09:17
  1. public class Test11 {
  2.         @SuppressWarnings("unused")
  3.         public static void main(String[]args){
  4.                 int a=3,b1,b2;       
  5.                 System.out.println("b1"+"="+(a++)+"+"+(a++));
  6.                 a=3;
  7.                 System.out.println("b2"+"="+(a++)+"+"+(++a));
  8.         }
  9. }
复制代码

作者: O(∩_∩)O~wen    时间: 2015-2-5 09:18
O(∩_∩)O~wen 发表于 2015-2-5 09:17

粘贴代码运行下就都明白了




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