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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

其实看了很多贴友的回复,没有解决根本问题。后来我在Eclipse里debug了一下,还是没发现为什么。
后来我想是不是运算符优先级的问题,但是按逻辑来看应该也行得通不应该是1才对,在寝室问了5个同学都说递增
于是带着疑惑我来找度年,再这样一个帖子中找到了答案:http://www.bitscn.com/plus/view.php?aid=20350
看到的吧友可以去看看,程序是这个
public class test
{
        public static void main(String[] args)
        {
                int x=1;
               
                for(;;)
                {
                        
                        x=x++;
                        System.out.println(x);
                }
        }
求解 为什么结果为1   , 请详解 x=x++ 是怎么运算的   ?多谢
}
很多吧友回答的不粗略这里提供一个连接

22 个回复

倒序浏览
学习了!~
回复 使用道具 举报
x=x++与x=++x的区别?    ++在前是++先参与运算,然后再自增,   ++在后边是先进行运算,然后再自增。
回复 使用道具 举报
chenxin2015 发表于 2015-4-24 08:36
x=x++与x=++x的区别?    ++在前是++先参与运算,然后再自增,   ++在后边是先进行运算,然后再自增。 ...

不是这样的,如果按运算符的优先级来看的话,赋值运算符排在最后,你看我上面有个链接,里面说是和java的机制有关。
回复 使用道具 举报
学习了,谢版主
回复 使用道具 举报
学习了,一直没怎么分清
回复 使用道具 举报
柒夜 发表于 2015-4-24 09:00
学习了,谢版主

不客气,能帮到你就好,我也是受益者:#
回复 使用道具 举报
星之钥匙 发表于 2015-4-24 09:00
学习了,一直没怎么分清

没搞懂的问题一定要继续搞得,学程序这东西不能含糊
回复 使用道具 举报
LiuWei2015 发表于 2015-4-24 09:08
没搞懂的问题一定要继续搞得,学程序这东西不能含糊

会的,但是有时候比如说和计算表达式一起连用什么的就很容易出错了
回复 使用道具 举报
星之钥匙 发表于 2015-4-24 09:12
会的,但是有时候比如说和计算表达式一起连用什么的就很容易出错了

是的,所以要了解表达式的优先级关系,理清楚关系了自然就不会错了,加油:P
回复 使用道具 举报
LiuWei2015 发表于 2015-4-24 09:13
是的,所以要了解表达式的优先级关系,理清楚关系了自然就不会错了,加油 ...

这个最头疼了,大神有没有总结啊,求指教
回复 使用道具 举报
这个按照内存就知道了啊。
先自增然后有两个值,一个是i=0, 一个是i自增为1; 然后在将i=0 赋值,
回复 使用道具 举报
星之钥匙 发表于 2015-4-24 09:16
这个最头疼了,大神有没有总结啊,求指教

大神不敢当,我也是新手啊,恩要说具体总结我只能给你这张我之前做这题百度了一下的优先级表,希望能帮到你

回复 使用道具 举报
突然世界晴 发表于 2015-4-24 09:18
这个按照内存就知道了啊。
先自增然后有两个值,一个是i=0, 一个是i自增为1; 然后在将i=0 赋值,  ...

不是啊,x的初始值为1不是0,让我费解的是为什么内存识别X++会这样,而++x就会递增下去呢?求大神指点:#
回复 使用道具 举报
噢,那你把我的0看成1就是,。
内存存储步骤是
先开辟一个内存i=1;然后运算i++.另外有一个新值i=2; 然后计算等于。虚拟机发现等于这个是前++,于是取第一个i=1的值。
回复 使用道具 举报
突然世界晴 发表于 2015-4-24 09:32
噢,那你把我的0看成1就是,。
内存存储步骤是
先开辟一个内存i=1;然后运算i++.另外有一个新值i=2; 然后计 ...

是的这个我明白,例如我们平时写for(int i=0;;i++)为什么单独写i++就会自增给自己,加了赋值有神吗不一样,大神我是不是很专牛角尖,确实分不清这里
回复 使用道具 举报
突然世界晴 发表于 2015-4-24 09:32
噢,那你把我的0看成1就是,。
内存存储步骤是
先开辟一个内存i=1;然后运算i++.另外有一个新值i=2; 然后计 ...

i++;单独写的时候为啥又会得到递增
回复 使用道具 举报
i=i++,不是说了 也自增了吗。 但是自增后 你又把i重新赋值为老值,新值没有任何作用,。
而直接i++;自增后没有重新赋到老值上面去,虚拟机会直接用新值替代老值。
回复 使用道具 举报
我觉得是先输出后再+1所以输出的是1;
回复 使用道具 举报
13699266500 发表于 2015-4-24 09:42
我觉得是先输出后再+1所以输出的是1;

这是循环,第一次输出1还可以想象,但是for里没有写任何判断条件,是死循环,每次都是1,要是先+1的话后面应该是递增才对啊!哥们你也要搞懂这个问题,赶紧一起拜大神
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马