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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

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

30 个回复

倒序浏览
结果应该是x=8
回复 使用道具 举报
同问,但是我感觉是因为堆内存用玩就消失,所以一直是5~
回复 使用道具 举报
错了是 栈内存
回复 使用道具 举报
其实X=X++  拆分开来就是:
X=X;
X++;
先赋值再自增   最后结果为8
回复 使用道具 举报
结果是 x = 5
解析:是将(x++)表达式的值赋予了x,但是由于++符号在x的后面,所以先使用x的值作为(x++)表达式的值,           所以x = x++; //值为x = 5
x = x++;//  x = 5
x = x++;// x = 5
回复 使用道具 举报
结果为5,由于++在x的后面,所以运算时是先把x的值提取出来然后赋值给x,然后再自增,3次都是先赋值给左边,所以3次下来结果是不会发生改变的
回复 使用道具 举报
小鹿 中级黑马 2015-9-30 08:44:41
8#
X  = 5,  你把知识点++和--在复习一下吧!
回复 使用道具 举报
x=5, 因为x++是已经赋值完再加1,所以x还是5
回复 使用道具 举报
5.。。。。。。。。
回复 使用道具 举报
楼夜雪 发表于 2015-9-29 22:21
同问,但是我感觉是因为堆内存用玩就消失,所以一直是5~

1.首先这个代码不是在堆内存执行的,而是在栈内存

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

回复 使用道具 举报
答案是8
x++执行一次,值都+1
回复 使用道具 举报
运行结果是5,但是如何解释x没有自增?
回复 使用道具 举报 1 0
  楼上几位运行了吗?  运行结果为5, ++在后面先赋值在自增.
回复 使用道具 举报
运行结果是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.运行如下图。
原因:首先要明确各个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
回复 使用道具 举报
本帖最后由 abidada 于 2015-9-30 23:04 编辑

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


回复 使用道具 举报
605526241 来自手机 中级黑马 2015-9-30 23:06:15
19#
一直是5,因为是将x++运算的值传递给a其实是这样的    1.x++将5拿出来作为运算结果,2.x++还有自增1   x变6...3.将运算结果传递给x所以,x还是5,就算再运算无数次还是5
回复 使用道具 举报
5啊,表达式的值始终是5,了解运算的每一步就知道了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马