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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这个问题有人知道吗?能跟我说说思路吗?我什么我运行的结果是1、

8 个回复

正序浏览
public static void main(String[] args) {
                int b = 1;
                int c = b++;
                System.out.println("b = "+b+"    c = "+c);
        }
你可以参考一下这个例子:int c = b++;是先进行赋值操作再进行自加操作
可以分解为下面两步就容易明白了:int c = b;b=++b
回复 使用道具 举报
我还以为是2.。。
回复 使用道具 举报
王英明 来自手机 中级黑马 2015-4-22 09:53:01
7#
1,不知道为什么!
回复 使用道具 举报
同样学习了,
回复 使用道具 举报
肯定是1啊、
回复 使用道具 举报
1
可以画个内存图分析
回复 使用道具 举报
步骤:1、先算出右边表达式的值为1,也就是要赋值给左边的b的值为1,但是这个时候只是将1存在了临时的内存区域
2、b++,b的值变为2
3、再将第一步提取出来的1赋值给b,完成整句代码的复制操作
别理解成自增不执行 只是1赋值覆盖了2而已
回复 使用道具 举报
这里要区分b=b++和b=++b的区别,前者将b的原始值付给左边的b,然后右边再自增,因此值是1。后者表达式是先自增,然后将自增后的值付给左边,因此是2.此外,如果没有赋值操作,单独的b++和++b是等效的,没有区别,值都是2.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马