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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 严露华 中级黑马   /  2013-4-8 23:09  /  1496 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

列: int i = 8; 执行语句为“i +=++i-i--;i自增后或者自减后是否全部的i都自增自减呢?还是i自增后自减后其它i都不变呢?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

6 个回复

倒序浏览
本帖最后由 liuyangyang 于 2013-4-8 23:20 编辑

你好,
个人理解这样的: 先看"="右边的:"++i-i--"——> 9-9;  
                  再看"="左边:8+=0; ------>8+0; 结果=8;
++i是先加后做于后面的运算,
i--是i值先不变,运算完再减1,

不是全部的都变,单个去看。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
当然不是全部自增自检,从左往右挨着分析
回复 使用道具 举报
liuyangyang 发表于 2013-4-8 23:19
你好,
个人理解这样的: 先看"="右边的:"++i-i--"——> 9-9;  
                  再看"="左边:8+=0; --- ...

你好,这要理解是否也对呢?
第一步:运算++i   的i=9
第二步:(++i-i)=0;  这里的第二个i是否也进行了自增呢?
第三步:i--   得i=8;
第四步:i+=i  得i=8。
回复 使用道具 举报
int i = 8; 执行语句为“i +=++i-i--,
也就是i=i+(++i)-(i--);
前缀++(--):先做自加(减),在参与运算  
后缀++(--):先赋值做运算,在自加(减):
所以i=8+9-9=8.

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
i+=++i-i--
可以表达为i=i+ ++i-i--
++i为运算中自增1,i--为运算后-1,所以i=8+9-9=8

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
我给你一个解决问题的建议:
首先要明白:
前缀++(--):先做自加(减),在参与运算  
后缀++(--):先赋值做运算,在自加(减)
你再把这句代码放到程序中把代格式化一下你就会明白了
  1. public static void main(String[] args) {
  2.                 int i = 8;
  3.                 i += ++i - i--;
  4.                 System.out.println(i);
  5.         }
  6. }
复制代码
希望这个方法能够帮到你
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马