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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不抛弃不放弃 中级黑马   /  2013-11-6 20:09  /  1038 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int x=5    执行   x+=x++  + (x++)后x是多少?  为什么  请说明执行的详细步骤 谢谢 大家 顺便问一下  加不加括号一样吗

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

9 个回复

倒序浏览
  1.         public static void main(String[] args) {
  2.                 // TODO Auto-generated method stub
  3.                 int x=5;
  4.                 x+=x+++(x++);
  5.                 //x=5+x+++5
  6.                 //x=5+6+5
  7.                 //x=11
  8.                 System.out.println(x);
  9.         }
复制代码
回复 使用道具 举报
不好意思是16啊
回复 使用道具 举报

怎么x是6呢 有点不明白  x++应该先用x运算 然后x才加1  怎么是加1后 才运算啊
回复 使用道具 举报
        public static void main (String []args){
                int x = 5;
                x+=x++  + (x++); //x = x + x++ + (x++);
                                //把这个式子精简 x = x + x++ +x ; x++优先级比较低简化为x
                                //这个时候虚拟机是这样判断的 x = x + x+(+ +x) ;
                System.out.println(x);
        }
----------------------------------------------------------------------------------------------------------
不知道分析的对不对   求指点
回复 使用道具 举报
回复 使用道具 举报
Sasson 发表于 2013-11-6 23:30
public static void main (String []args){
                int x = 5;
                x+=x++  + (x++); //x = x + x++ + (x++);

分析 好像不太对吧  我已经知道了
回复 使用道具 举报
Sasson 中级黑马 2013-11-7 20:42:27
8#
那为什么是16呢
回复 使用道具 举报
其实就是计算先后顺序的事,可以把他看作成x=x+(x+++(x++));这样就好算了 分解成先把x+++(x++)看作一个整体用y表示就是x=5+y;y=x+++(x++),先计算x++,自加后x编程了6于是y=(6++)+5,所以
x=5+6+5=16
回复 使用道具 举报
刚才写错了 应该是好像是 计算先后顺序的事,可以把他看作成x=x+(x+++(x++));这样就好算了 分解成先把x+++(x++)看作一个整体用y表示就是x=5+y;y=x+++(x++),先计算x++,自加后x编程了6于是y=5+(6++)=11 然后是x=x+y=5+11
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马