黑马程序员技术交流社区

标题: 关于算术运算符++的面试题 [打印本页]

作者: 奔跑的小红帽    时间: 2015-10-18 22:50
标题: 关于算术运算符++的面试题
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

作者: dreamerzhou    时间: 2015-10-18 23:26
我怎么觉得x=6;y=5;
作者: 奔跑的小红帽    时间: 2015-10-19 21:08
你运行一下就知道了,x输出确实是5
作者: C威    时间: 2015-10-19 21:28
x=5,y=6;老师讲的时候确实有点晕,但是多理解几遍就好了
作者: JYcainiao    时间: 2015-10-19 22:27
结果是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 ;

作者: 奔跑的小红帽    时间: 2015-10-19 23:11
JYcainiao 发表于 2015-10-19 22:27
结果是x = 5; y = 6;运算过程:
int x = 5;
x=x++;  三步  第一步  x单独拿出来 值为5  第二步  x++  x =  ...

完全正确
作者: 吉吉粥    时间: 2015-10-20 00:45
求解敲出来的结果为什么不一样
——————————————————————

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



作者: ash午夜阳光    时间: 2015-10-20 00:49
底层temp = x; x = x + 1; x = temp;
作者: 删''情    时间: 2015-10-20 00:58
先赋值再++..所以x为5,,Y为6
作者: hdhdhd    时间: 2015-10-20 10:07
在后面就是先运算后自增,前面就是先自增后运算
作者: Sayman    时间: 2015-10-20 14:44
如果实在不行的话,就看赋值号靠近哪个,就先运算哪个吧
作者: 奔跑的小红帽    时间: 2015-10-20 17:59
吉吉粥 发表于 2015-10-20 00:45
求解敲出来的结果为什么不一样
——————————————————————

你的正确哒{:2_37:}
作者: 吉吉粥    时间: 2015-10-20 18:41
奔跑的小红帽 发表于 2015-10-20 17:59
你的正确哒

困扰我好久的,嗯,对的就好




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