黑马程序员技术交流社区

标题: ++问题?求解决!! [打印本页]

作者: 7℃洋    时间: 2012-10-31 22:23
标题: ++问题?求解决!!
int x=3,y;
y=x+++++x*2+x+++++x;
System.out.println(y);


请问算出来的值为什么是25,而不是18!
作者: 樊鹏飞    时间: 2012-10-31 22:35
本帖最后由 樊鹏飞 于 2012-10-31 22:45 编辑

++在前:先运算再赋值
++在后:先赋值再运算
结果如图所示
1.(x++)取值3,取值完后做运算变成了4.
2.(++x*2)中,此时x已变为4,又++在前 先运算 变成了5, 式子运算结果为10;
3.(x++)中,++在后 所以先取值为5,之后做运算,x变成了6;
4.(++x)中,++在前 所以先运算 因为上一步中x已经为6  所以这里x变成了7;
最后将运算结果相加 3 + 5*2 + 5 + 7 = 25

q1q1.jpg (7.52 KB, 下载次数: 27)

q1q1.jpg

作者: 坚持不懈    时间: 2012-10-31 22:35
本帖最后由 坚持不懈 于 2012-10-31 22:37 编辑

y=x++ + ++x*2+x++ + ++x;
3+5*2+5+7


      先使3 下次使用是4   ++x就是4+1=5   5*2   x++ X是5  下次使是6   ++X 就是6+1         
作者: 林剑    时间: 2012-10-31 22:35
本帖最后由 林剑 于 2012-10-31 22:39 编辑

为什么我运行了报错?
作者: 张利    时间: 2012-10-31 22:37
x+++++x*2+x+++++x相当于(x++)+(++x)*2+(x++)+(++x)
从左往右  x++ 先运算 所以是3,然后自增变成4;接着第二个++x,先自增再运算,所以是5*2,第三个x++先运算 所以是5,再自增变成6,最后++x先自增变成7,再运算
3   +    5*2   +   5   +   7=25
4,       5,            6,       7
作者: 林志进    时间: 2012-10-31 23:27
够简写的啊,连括号都不加= =!。。
作者: 周斌    时间: 2012-11-1 00:08
本帖最后由 周斌 于 2012-11-1 00:12 编辑

优先级 运算符 结合性
1 . [] () ; ,
2 ++ ―― += ! ~ +(一元) -(一元) 右ð左
3 * / % 左ð右
4 +(二元) -(二元) 左ð右
5 << >> >>> 左ð右
6 < > <= >= instanceof 左ð右
7 = = != 左ð右
8 & 左ð右
9 ^ 左ð右
10 | 左ð右
11 && 左ð右
12 || 左ð右
13 ?: 右ð左
14 = *= /= %= += -= <<= >>= >>>= &= ^= |= 右ð左
根据上面的优先级可以把式子变成这个样子
y=((x++  +  (++x*2) ) +  x++ ) +   ++x;
          3       +     10       +       5       +     7 = 25


作者: 丁桂松    时间: 2012-11-1 07:30
虽然知道为什么,但是强烈谴责这样写代码的人。简直是没事找事,无聊之极。
作者: 林剑    时间: 2012-11-1 08:01
不加括号编译报错啊,你们有试过吗
作者: 7℃洋    时间: 2012-11-5 15:17
不是这样写   是我们老师布置的题目!
作者: 杨政    时间: 2012-11-5 15:25
x++为3 ++x为4 代入即可。
作者: 黄正根    时间: 2012-11-7 00:50
这是个简单的赋值运算题目
考察你对++赋值的理解
按我的理解就是   ++  在前是先进行自增再赋值  ++在后是先进行++之前的运算!
代码如下:
class Temp
{
        public static void main(String[] args)
        {       
        int x=3,y;
        y=(x++)+(++x)*2+(x++)+(++x);
                //y=(x为3)3(自增赋值x=4)+(再自增1 x=5)5*2+(继续取x=5)5(x自增1赋值x=6)+(x再自增1赋值x=7)7=25;
        System.out.println("y="+y);
        }
}

作者: HeiMa-黄倲江    时间: 2012-11-7 04:06
哥们我飘过
作者: 坚持不懈    时间: 2012-11-7 16:56
{:soso_e183:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2