A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© JSZMT黑马 初级黑马   /  2015-2-1 17:10  /  1352 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 JSZMT黑马 于 2015-2-2 13:19 编辑

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

a=3;


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



14 个回复

倒序浏览
不一样! b2 是a + (++1),
回复 使用道具 举报
不一样,b2中的a是在b1运算后的,b1=4,b2=5
回复 使用道具 举报
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++运算方式是相同的。
回复 使用道具 举报
不一样,b1的值算出后,a会自加1,所以a的值已经改变了,b2与b1的值也就不一样了
回复 使用道具 举报
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的值不同,。
回复 使用道具 举报
b1=4,b2=5.
回复 使用道具 举报
JSZMT黑马 来自手机 初级黑马 2015-2-2 00:46:36
8#
明白了,运算方式应该是一样的。我还想问下:
int a=3,b1,b2;
b1=(a++)+(a++)
a=3
b2=(a++)+(++a)
求解!我想知道具体的运算步骤是怎样的,谢谢!
回复 使用道具 举报
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)是怎么运算的不
回复 使用道具 举报
b1 = 3 + (3+1)
b2 = 3 +( (3+1)+1)
回复 使用道具 举报
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
回复 使用道具 举报
JSZMT黑马 发表于 2015-2-2 13:15
你的代码b2写成b1。
               b2 = a++ +1;
                System.out.println("b2="+b1);

一下没注意吧这个写错了 。。 。。 :L。
回复 使用道具 举报
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;
回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报

粘贴代码运行下就都明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马