黑马程序员技术交流社区

标题: x=x++ [打印本页]

作者: 黄敬璇    时间: 2015-4-23 15:33
标题: x=x++
public class test
{
        public static void main(String[] args)
        {
                int x=1;
               
                for(;;)
                {
                       
                        x=x++;
                        System.out.println(x);
                }
        }
求解 为什么结果为1   , 请详解 x=x++ 是怎么运算的   ?多谢
}


作者: dengxing    时间: 2015-4-23 15:52
x=x++,是先把后一个x的值即1赋值给前面的x,然后再++,如果是x=++x的话打印的值就为2了,即++后再把值赋给x
作者: Zack    时间: 2015-4-23 16:02
用x = ++x;或者直接x++;结果就是2
作者: 雾大探路    时间: 2015-4-23 16:07
x++是先赋值后运算,把1赋值给x,然后运算++,而++x是先运算后赋值。
作者: cyr    时间: 2015-4-23 16:12
你要理解x++的涵义啊,x=x++,x先赋值给x,然后再+1,问题是等x+1的时候没有用x去接收,所以x永远都是1;
作者: 殃金咒    时间: 2015-4-23 17:36
先赋值,后++。
作者: 893269222    时间: 2015-4-23 17:57
没有循环条件,只执行一次??
作者: fanxia_2007    时间: 2015-4-23 18:17
先赋值,再运算
作者: YQliang    时间: 2015-4-23 18:30
首先这是一个死循环,x=x++是x的初始值赋给了x,但是每次循环的时候X还是那个X,因为他把初始值赋给了自己而不是运算后的值赋给自己,如果是X++,那么每次运算完后X自身已经变了;你可以拿x=++x看一下就知道了
作者: 哔哩哔哩    时间: 2015-4-23 18:40
http://bbs.itheima.com/thread-188910-1-1.html有详细解释
作者: zhiweiqi    时间: 2015-4-23 18:48
x++:x先参与运算然后再加1
++x:x先加1然后再参与运算

作者: 柒夜    时间: 2015-4-23 18:54
x=x++;是后面的x先把自己的值赋给前面的x,然后自己本身再+1,
作者: li514620797    时间: 2015-4-23 19:17
x=x++就是x本身自加1
作者: 小白中的大白菜    时间: 2015-4-23 19:18
是赋值 运算循序的关系。
x=x++   是赋值在进行自加运算,
x=++x  是先自加 在赋值,
x= x++  是先把x的值付给自身了。然后输出x   至于之后的++ 虽然也运算了,但是没有赋值也没有操作。  
作者: 过路人    时间: 2015-4-23 19:35
目测死循环,楼主本来是我们班的妹子,结果去了下一期。:Q
作者: yxnheima    时间: 2015-4-23 19:50
是先赋值再++
作者: 赶路要紧    时间: 2015-4-23 22:34
for(;;)这是啥意思???
作者: Oh.Ba    时间: 2015-4-23 22:47
你for里面什么都没定义啊,for就不会运行x = x++。
作者: 高光天    时间: 2015-4-23 23:18
运行的时候先在内存中的区域创建一个临时变量用来存放x的值(1),然后进行x的自加运算,x变为2,之后临时存放变量的值1在赋给x,所以输出为1
作者: rose_xiaomei    时间: 2015-4-24 03:58
一个简单的记法:
++X 加号在前,就先运算在赋值
X++ 变量在前,就先赋值再运算
作者: 莫里亚蒂    时间: 2015-4-24 07:20
一般都不x=x++这么写·~直接写x++就可以了
作者: 忘言    时间: 2015-4-24 11:27
在java里面,执行x=x++;时
1.先在内存中开辟一个临时空间,将当前的x值放进去;
2,x自增;
3.将临时空间里面的值赋值给x,释放该空间;




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