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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈捷旋 中级黑马   /  2015-3-21 10:18  /  2554 人查看  /  24 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Test
{
        public static void main(String[] args)
        {
                int x=5;
                x=x+(x++)+(++x);
                System.out.println(x);
        }
}


class Test
{
        public static void main(String[] args)
        {
                int x=5;
                x=(++x)+(x++)+x;
                System.out.println(x);
        }
}

结果会是多少呢?两个X都是几?不编译你能算对不?

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1

查看全部评分

24 个回复

倒序浏览
16 19  不知道对不对

点评

是17和19 5+5+7 6+6+7 下次再出个for循环的  发表于 2015-3-21 12:30
回复 使用道具 举报
5+5+7 = 17  ?
6+6+7 = 19  ?

点评

思路很对哦  发表于 2015-3-21 12:31
回复 使用道具 举报
同意楼上的!运行结果是多少呢?
回复 使用道具 举报
17...19....
先增后加   先加后增~!!
回复 使用道具 举报
557  667话说不用加括号

点评

其实很多同学就迷惑在括号上的  发表于 2015-3-21 12:32
回复 使用道具 举报
17 19 先算括号内的  然后再给x再算
回复 使用道具 举报
小甲鱼 发表于 2015-3-21 10:41
5+5+7 = 17  ?
6+6+7 = 19  ?

对的,思路很清晰
回复 使用道具 举报
17 19 (x++)参与运算的是原来的值,出了括号就是自增以后的值
回复 使用道具 举报
好变态的题,我完全晕了,看到答案才想起怎么回事
回复 使用道具 举报
第一个为什么是17不是19啊
回复 使用道具 举报
本帖最后由 胡谭龙 于 2015-3-21 14:33 编辑

第一个Test先执行(x++),(x++)=5,x=6        然后执行(++x),(++x)=7,x=7
        所以最中x=5+5+7=17
第二个Test先执行(++x),(++x)=6,x=6
        在执行(x++),(x++)=6,x=7
        所以x=6+6+7=19

点评

回答的好纤细  发表于 2015-3-21 15:26
回复 使用道具 举报 1 0
x++表示先赋值 然后在自增
++x先自增 在赋值
回复 使用道具 举报
胡谭龙 发表于 2015-3-21 14:22
第一个Test先执行(x++),(x++)=5,x=6        然后执行(++x),(++x)=7,x=7
        所以最中x=5+5 ...

过程很清楚,谢谢
回复 使用道具 举报
17 和 19 ++x是先将x+1然后运算 , x++是先运算后将x+1
回复 使用道具 举报
18,16,对不?

点评

你还没弄明白,再研究下  发表于 2015-3-21 16:39
回复 使用道具 举报
17         
19              
回复 使用道具 举报
不错,思路不清楚,很容易出错
回复 使用道具 举报
确实是17 19
回复 使用道具 举报
17,19不知道对不对
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马