关于i+++++i问题

Xeon-Shao 2012-01-10 12:51:33
如果int i=4;
int y=i+++++i;
则y等于多少??如何判断??
...全文
196 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
艳沐石 2012-01-11
  • 打赏
  • 举报
回复
y = i++ + ++i
相当于

// 解析i++
t1 = i;
i = i +1;
// 解析++i
i = i + 1;
t2 = i;
// 等式结果
y = t1 + t2;
「已注销」 2012-01-11
  • 打赏
  • 举报
回复
哦哦,实在是太难了,不懂啊,楼主好厉害啊
I_jiao_Mt 2012-01-11
  • 打赏
  • 举报
回复
难道还没结贴?
qq827010202 2012-01-10
  • 打赏
  • 举报
回复
结果是10
i++ 是 4
++i 是 6(i++在后一次用到i时,是5,然后++i是6)
y=4+6

南老頭 2012-01-10
  • 打赏
  • 举报
回复
不存在,这么写肯定报错了,编译都通不过
qq827010202 2012-01-10
  • 打赏
  • 举报
回复
我觉得和运算符的原理很相似。为什么纠结于这样一个问题呢?
Xeon-Shao 2012-01-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wuyigong111 的回复:]
引用 7 楼 sdujava2011 的回复:

引用 3 楼 ella110727 的回复:

应该是这样子写的y = i++ + ++i;

我想问的就是为什么我写那个编译不通过呢??
如何判断是否能编译通过呢????
比如
int i=4;
int y=i+++i+++i++;
就能通过

基于lz的纠结,我去eclipse上面测试了一下,发现编译的时候 i++ 后……
[/Quote]
请这位仁兄详细谈一下可否?
zysnba 2012-01-10
  • 打赏
  • 举报
回复
如果int i=4;
int y=i+++++i;
计算步骤:
int y = (i++) + (++i);
int y = (i++) + 5;
int y = 5 + 5=10;
  • 打赏
  • 举报
回复
不管是先i++,还是先++i,结果都是10。。

i++ + ++i中间的+必须有空格。。
zysnba 2012-01-10
  • 打赏
  • 举报
回复
如果int i=4;
int y=i+++++i;
计算步骤:
int y = (i++) + (++i);
int y = 4 + (++i); //这个时候i变成了5
int y = 4 + (++5)//++5 等于6
int y = 4+ 6=10
Zhou 2012-01-10
  • 打赏
  • 举报
回复
int y = (i++) + (++i);
wuyigong111 2012-01-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sdujava2011 的回复:]

引用 3 楼 ella110727 的回复:

应该是这样子写的y = i++ + ++i;

我想问的就是为什么我写那个编译不通过呢??
如何判断是否能编译通过呢????
比如
int i=4;
int y=i+++i+++i++;
就能通过
[/Quote]
基于lz的纠结,我去eclipse上面测试了一下,发现编译的时候 i++ 后面可以有 + 号,但是 ++i 前面不能有加号。
Xeon-Shao 2012-01-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ella110727 的回复:]

应该是这样子写的y = i++ + ++i;
[/Quote]
我想问的就是为什么我写那个编译不通过呢??
如何判断是否能编译通过呢????
比如
int i=4;
int y=i+++i+++i++;
就能通过
MiceRice 2012-01-10
  • 打赏
  • 举报
回复
你这句话,应该没法编译吧?

要加上空格:int y=i++ + ++i;

加上空格后,其实就很容易理解了吧?

因为 ++ 运算符的特殊性,i++会在整个表达式运算完成后才执行,而++i会在表达式计算之前就执行,所以上面这句话相当于被拆解成:
++i;
int y = i+i;
i++;

所以y=5,i=6
飞跃颠峰 2012-01-10
  • 打赏
  • 举报
回复
i++的值为4,i变成5
++i的值为6,i变成6
所以 y=4+6=10
Steve 2012-01-10
  • 打赏
  • 举报
回复
没空格不行吧:
int y = i++ + ++i;
i++ =4 随后i=5
++i = 6

4+6 = 10
qq827010202 2012-01-10
  • 打赏
  • 举报
回复
应该是这样子写的y = i++ + ++i;

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧