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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 公输子 中级黑马   /  2015-8-27 23:53  /  1566 人查看  /  29 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                int i=3;
                  int s1 = (i++)+(i++)+(i++);
           System.out.println("s1 ="+s1+",i="+i );
                i=3;
                 s2=(++i)+(++i)+(++i);
           System.out.println("s2 ="+s2+",i="+i);
求解输出的s1和s2分别输出的是啥?为什么?

29 个回复

倒序浏览
第一个看成:

3 +  4  + 5

第二个看成:

4 + 5 + 6

懂了吧 ?
回复 使用道具 举报 2 0
++在前先自增1  ++在后先参与运算吧 !?
回复 使用道具 举报 1 0
Emerson 发表于 2015-8-28 00:08
第一个看成:

3 +  4  + 5

感谢大神,瞬间就明白了
回复 使用道具 举报
天使也掉毛 发表于 2015-8-28 00:11
++在前先自增1  ++在后先参与运算吧 !?

之前不知道i的值已经被改变,以为是3+3+3和4+4+4
回复 使用道具 举报
路过!!!!!
回复 使用道具 举报

{:2_33:}在线等答案看来没戏了
回复 使用道具 举报
s1=12,i=6
s2=15,i=6
回复 使用道具 举报
嘉嘉 中级黑马 2015-8-28 00:41:23
9#
有点意思
回复 使用道具 举报
既然明白了。请教一下
int i =1;
i = i++;
syso(i);

结果?为什么?
回复 使用道具 举报 1 0
STARlove 发表于 2015-8-28 00:42
既然明白了。请教一下
int i =1;
i = i++;

是不是因为i++在表达式中先运算后自增,但是这里直接赋值后却直接输出了,没有运行自增。所以结果没有错误的话应该是1
回复 使用道具 举报
公输子 发表于 2015-8-28 00:49
是不是因为i++在表达式中先运算后自增,但是这里直接赋值后却直接输出了,没有运行自增。所以结果没有错 ...

自增是必须的一步。。不能不运行的
回复 使用道具 举报
公输子 发表于 2015-8-28 00:22
在线等答案看来没戏了

哈哈哈哈
回复 使用道具 举报
s1=12,s2=15
回复 使用道具 举报
Glc90 中级黑马 2015-8-28 09:33:15
15#
单独使用时候 ++在前或者在后计算结果都一样
参与运算是 ++在前 先自增在带入数据运算
                ++在后 先带入数据 再自增
回复 使用道具 举报 1 0
楼上的说很清楚!
回复 使用道具 举报
S1=12,i=6;s2=15,i=6;
回复 使用道具 举报
回答之前说一个最基本的问题,你的s2并没有定义,这样程序肯定会报错,找不到s2
下面回答问题:
第一次输出,s1=(i++)+(i++)+(i++);i的值是先进行运算再进行自加,所以s1=3+4+5=12
第二次输出,s2=(++i)+(++i)+(++i);i的值是先进行自加再进行运算,所以s2=4+5+6=15
over!
回复 使用道具 举报
i++是先+1在赋值,++1是先赋值在加1
回复 使用道具 举报
在编程中i++和++i最终是一样的,不过在循环体中,i++是先取出I,再加1,++i先加后取
回复 使用道具 举报 1 0
12下一页
您需要登录后才可以回帖 登录 | 加入黑马