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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yxtyxj 中级黑马   /  2015-9-29 22:15  /  1605 人查看  /  30 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int x = 5;
x = x++;
x = x++;
x = x++;
System.out.println("x = "+x);

30 个回复

正序浏览
一句话,  x++都是废话,没用  所以一直无用功。  5  你给他只是初始赋值,后续没继续赋值
回复 使用道具 举报
明明8 好吗
回复 使用道具 举报
喔,是这样的啊。。。。
回复 使用道具 举报
楼夜雪 发表于 2015-10-1 08:57
但是运行结果为5,如果不是栈内存消失,你怎么解释

运行结果是5,是因为:
先赋值后自增,x++这个表达式仅仅是计算了一个加1,并没有将结果赋予x,所以x值不变是5

前面有人说了。
回复 使用道具 举报
碧血丹心 发表于 2015-9-30 22:41
结果为5.运行如下图。
原因:首先要明确各个X。
对于x=x++;

李福菊,这个解释应该是正确的~~
回复 使用道具 举报
heshiwei 发表于 2015-9-30 09:55
1.首先这个代码不是在堆内存执行的,而是在栈内存

2.x=x++ 执行完后x不会消失,x的值也发生改变,所以每 ...

但是运行结果为5,如果不是栈内存消失,你怎么解释
回复 使用道具 举报
本帖最后由 云上边牧 于 2015-10-1 01:00 编辑

x = 5,这个全部在栈内存中,没执行完一条x= x++,就弹栈了,main方法中的X值始终是5,所以输出的也是5
回复 使用道具 举报
这样的题目没有意义。这叫做滥用。
回复 使用道具 举报
lvfx 来自手机 中级黑马 2015-9-30 23:59:05
23#
8啊            
回复 使用道具 举报
应该是5。。。。?
回复 使用道具 举报
5   x=x++   先赋值后自增,x++这个表达式仅仅是计算了一个加1,并没有将结果赋予x,所以x值不变是5
回复 使用道具 举报
5啊,表达式的值始终是5,了解运算的每一步就知道了
回复 使用道具 举报
605526241 来自手机 中级黑马 2015-9-30 23:06:15
19#
一直是5,因为是将x++运算的值传递给a其实是这样的    1.x++将5拿出来作为运算结果,2.x++还有自增1   x变6...3.将运算结果传递给x所以,x还是5,就算再运算无数次还是5
回复 使用道具 举报
本帖最后由 abidada 于 2015-9-30 23:04 编辑

你变为     x=++x;                               x=++x;
            x=++x;
     最后才x=8


回复 使用道具 举报
我想 应该是5
回复 使用道具 举报
结果为5.运行如下图。
原因:首先要明确各个X。
对于x=x++;
System.out.println("x="+x);
在打印的x为等号左边的x,原代码可以改为:
int x=5;
int y=x++;
int z=y++;
int h=z++;
system.out.prinltn("h"+h);
也就是原代码中
(1)int x=5;
(2)x=x++;
(3)x=x++;
此时(2)右边的x首先赋值给左边x=5,然后右边自增,而(3)中的右边x调用的是(2)左边的x=5.故(3)的左边先赋值,(3)的左边x=5,同理,以下都是。
大家只是对各个x如何调用。
希望对大家有用~

QQ图片20150930223149.png (133.75 KB, 下载次数: 107)

QQ图片20150930223149.png
回复 使用道具 举报
运行结果是5,没错的。我的理解是将“x=x++;” 看成是一次函数的调用
public static void show(int x){

x=x++;
}
那么上面就是: int x=5;
                      show(x);
                      show(x);
                      show(x);
   System.out.println("x="+x);
那么你画栈那个框图一个一个来就知道了,首先main x=5,第一次调用show函数后现将main中的5赋给x,然后执行自加x=6,但是到这个语句结束,则x=6将随着show函数的弹栈也被弹出去。则第二次调用show的时候仍然是将main中的5赋给x,接下同第一次的步骤。第三次亦是如此。所以最后输出的其实是主函数中的x=5。      
回复 使用道具 举报
  楼上几位运行了吗?  运行结果为5, ++在后面先赋值在自增.
回复 使用道具 举报
运行结果是5,但是如何解释x没有自增?
回复 使用道具 举报 1 0
12下一页
您需要登录后才可以回帖 登录 | 加入黑马