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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天朋友看到了个帖子,问
int x =5;
x=x+(x++)+(++x);
后x的值是多少?
我看了之后口算了一下告诉他19,他说不是的,是17,于是我蛋疼的求证了一下。

评分

参与人数 1技术分 +2 收起 理由
Doraemon + 2

查看全部评分

46 个回复

正序浏览
感觉是 5+5+6=16,再自增一,17
回复 使用道具 举报
学习下。
回复 使用道具 举报
M单色调 来自手机 中级黑马 2014-7-21 07:13:07
45#
在不进行赋值运算的时候,他们的功能都是一样的,只有在赋值的时候。。。
回复 使用道具 举报
17   就是有点绕
回复 使用道具 举报
hxwo211314 发表于 2014-7-12 22:07
运算符的优先级(从高到低)
如果在程序中,要改变运算顺序,可以使用()。
由该表可以得到先算括号里面的 ...

总结的不错啊:handshake
回复 使用道具 举报
jyc2511 发表于 2014-7-21 00:46
注意有()啊,运算顺序

5+5+(6自增1=7)=17的运算顺序应该是正确的
回复 使用道具 举报
ss5619498 发表于 2014-7-13 20:58
不是这样的吧!!!、
哪是5+5+7,汗
第一步是5+5+6然后赋值给左边的X

注意有()啊,运算顺序
回复 使用道具 举报
。。。。这,不算是一个BUG吗
回复 使用道具 举报
不是这样的吧!!!、
哪是5+5+7,汗
第一步是5+5+6然后赋值给左边的X
然后做X++
既16+1=17
根本就不是5+5+7
过程不对
回复 使用道具 举报
这要看编译器的
回复 使用道具 举报
5+5+7=17,没什么好解释的。。。
回复 使用道具 举报
结果是5+6+6,还是5+5+7?我想的是5+6+6。晕了
回复 使用道具 举报
我怎么算的是21啊
回复 使用道具 举报
5+5,等于了10,之后5变成6,在后来6先变成7再相加,10+7=17.
回复 使用道具 举报
class Test
{
        public static void main(String args[])
                {
                        int x =5;
                        System.out.println(x=x);
                        x=5;
                        System.out.println(x=x+(x++));
                        x=5;
                        System.out.println(x=x+(x++)+(++x));       
                }
}
试了下 结果是 5  10  17
回复 使用道具 举报
++x是先加后赋值,x++是先赋值后加。
回复 使用道具 举报
应该是这样的吧。。。。5+5+(1+6)
回复 使用道具 举报
Adjin 中级黑马 2014-7-13 11:15:16
30#
应该是5+5+7?
回复 使用道具 举报
编个程序算一下不就知道了
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马