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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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


输出结果为:5
                     6
如何理解:
x=x++,因为++在变量后,所以变量x先参与运算,而++的运算优先级高于赋值运算符=,相当于x的值先运算想赋给临时变量temp,然后x++,x变为6,然后在把temp变量中的值赋给x

12 个回复

倒序浏览
我怎么觉得x=6;y=5;
回复 使用道具 举报
你运行一下就知道了,x输出确实是5
回复 使用道具 举报
x=5,y=6;老师讲的时候确实有点晕,但是多理解几遍就好了
回复 使用道具 举报
结果是x = 5; y = 6;运算过程:
int x = 5;
x=x++;  三步  第一步  x单独拿出来 值为5  第二步  x++  x = 6;  第三步  把第一步的值赋给x   整个表达式执行完   x = 5;
y=x++;  三步   第一步  x单独拿出来  值为5  第二步  x++  x = 6;  第三步  把第一步的值赋给y  整个表达式执行完  y = 5  
综上所述  程序运行完  x = 6;  y = 5 ;
回复 使用道具 举报
JYcainiao 发表于 2015-10-19 22:27
结果是x = 5; y = 6;运算过程:
int x = 5;
x=x++;  三步  第一步  x单独拿出来 值为5  第二步  x++  x =  ...

完全正确
回复 使用道具 举报
求解敲出来的结果为什么不一样
——————————————————————

package answer;

class answer2

{
        public static void main(String[] args)
        {
                int x=5;
                int y=0;
                x=x++;
                y=x++;

        System.out.println("x="+x+",y="+y);
        System.out.println(x);
        System.out.println(y);
        }
}

——————————————————
结果是
x=6,y=5
6
5


回复 使用道具 举报
底层temp = x; x = x + 1; x = temp;
回复 使用道具 举报
先赋值再++..所以x为5,,Y为6
回复 使用道具 举报
hdhdhd 中级黑马 2015-10-20 10:07:33
10#
在后面就是先运算后自增,前面就是先自增后运算
回复 使用道具 举报
Sayman 中级黑马 2015-10-20 14:44:14
11#
如果实在不行的话,就看赋值号靠近哪个,就先运算哪个吧
回复 使用道具 举报
吉吉粥 发表于 2015-10-20 00:45
求解敲出来的结果为什么不一样
——————————————————————

你的正确哒{:2_37:}
回复 使用道具 举报

困扰我好久的,嗯,对的就好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马