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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王亚运 中级黑马   /  2012-10-30 14:40  /  2512 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王亚运 于 2012-10-30 15:29 编辑
  1. int a=2;
  2. int b=(a++)+3*a;</font>
复制代码
关于这代代码。
书上说结果b=11
不信,运行结果果然是11....-_-!!
为什么不是先运行括号?
括号优先级貌似比*要高的啊.


{:soso__4051996887250320904_4:}


好吧,一直是认为,
先运行括号(a++)=3
然后是 ,3+3*3..
看来我错了...
下沉吧...

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

10 个回复

倒序浏览
就是括号先运行啊
是++a和a++的问题
回复 使用道具 举报
没错啊
先运行的就是a++啊,
b=(a++)+3*a;
b=2+3*3 这不就是11吗?
回复 使用道具 举报
int a=2;
int b=a++ + 3*a;
System.out.println(b);
add(a++);
public static void add(int a){
                System.out.println(a);
        }
a++的作用是,下一次用到时加1,像add(a++),因为a的作用范围是局部变量,而这是值传递,a++没有做到下一次的应用,所以在新的方法add,a++并没有穿++是无效的

点评

a++的作用是,下一次用到时加1 这句,醍醐灌顶。。。 懂了,谢谢  发表于 2012-10-30 17:18
回复 使用道具 举报
b=(a++)+3*a
先计算(a++)的值,因为a=2,所以,(a++)的值是2,然后a自加一次,a的值就是3,3*a值是9,表达式就是b=2+9;所有值最后是11.

点评

一直是认为,先运行括号(a++)=3 然后是 ,3+3*3.. 看来我错了...  发表于 2012-10-30 15:28
回复 使用道具 举报
int b=(a++)+ 3*a;
可以这么理解  a++  a先出玩  a还是2  ,       +3*a(a玩完后回来之后加1)也就是3
回复 使用道具 举报
种生祥 发表于 2012-10-30 14:48
就是括号先运行啊
是++a和a++的问题

好吧,一直是认为,
先运行括号(a++)=3
然后是 ,3+3*3..
看来我错了...:dizzy:
回复 使用道具 举报
王永荣 发表于 2012-10-30 14:51
没错啊
先运行的就是a++啊,
b=(a++)+3*a;

一直是认为,
先运行括号(a++)=3
然后是 ,3+3*3..
看来我错了...
回复 使用道具 举报
本帖最后由 坚持不懈 于 2012-10-30 16:46 编辑
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {        
  5.                 int a=2;
  6.                 int b=a++;
  7.                 System.out.println("b="+b);
  8.                 System.out.println("a="+a);
  9.         }

  10. }
  11.                 结果输出b=2,a=3;
  12. //总结:a++  a是先出去玩   把2的值给b      之后a回来在自加1 变成3
  13.          
  14. */
  15. class Demo
  16. {
  17.         public static void main(String[] args)
  18.         {        
  19.                 int a=2;
  20.                 int b=++a;
  21.                 System.out.println("b="+b);
  22.                 System.out.println("a="+a);
  23.         }
  24. }                         结果输出b=3,a=3;
  25. //总结: ++a  a是先自加1   把3的值给b     最后a也就是3啦
复制代码
帮助人是件很高兴的事,嘿嘿.  还可以帮助自己巩固知识~~

点评

姑娘... int a=2; int b=a++; 我运行结果.是 b=2,a=3 刚才还怀疑自己错了.. 你试试....  发表于 2012-10-30 16:04
深表谢意~~ 第一个a=2,还是没接受.. 先记住就好了. 恩,解说很详细. ths  发表于 2012-10-30 15:55
回复 使用道具 举报
是先运行括号的没错,运行后:a=3,但是在程序内部被加数2已经在执行括号中的内容是就保存好了。所以是2+3*a而不是3+3*a

点评

但是在程序内部被加数2已经在执行括号中的内容"时"就保存好了 这句,我看了三遍。。 恩,谢谢,这样说,明白了。  发表于 2012-10-30 17:13
回复 使用道具 举报
坚持不懈 发表于 2012-10-30 15:36
帮助人是件很高兴的事,嘿嘿.  还可以帮助自己巩固知识~~

嘿嘿,不好意思啊,总结那写对了. 结果输出那快写差了. 嘿嘿,在次不好意思

点评

表客气。。。  发表于 2012-10-30 17:20
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马