社区
Java EE
帖子详情
关于i+++++i问题
Xeon-Shao
2012-01-10 12:51:33
如果int i=4;
int y=i+++++i;
则y等于多少??如何判断??
...全文
238
17
打赏
收藏
关于i+++++i问题
如果int i=4; int y=i+++++i; 则y等于多少??如何判断??
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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;
不关橙猫猫事的哦
2012-01-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;
i++与++i
i++为:先执行 赋值运算,之后自身执行+1运算。 即: int i = 3,a = 0 ; i ++ : 先赋值再运算;例如:a = i ++; 先赋值 a = i ,再运算 i = i + 1 ;所以输出结果为 a ==3; ++ i : 先运算再赋值;例如:a = i ++; 先运算 i = i + 1 ,再 赋值 a = i ;所以输出结果为 a ==4; 以 i++为例: 先开批一个临时存储区 将 i 的值复制到存储区 i 自身+1 临时存储区的值等待被调用(参与运算、输...
++i+i++
偶然看到一个朋友的QQ验证
问题
:int i=0;i+=++i+i++;++i+i++=? 在不同的环境里面运行结果竟然不一样,leetcode的结果是13,VS里是10,eclipse是6,然后上网查了一下,可能跟C++和Java对于自增操作的不同处理有关,在Java中,对于i=i++,JVM会先把i的初值(即为0)拷贝到临时变量区,然后对i值+1,此时i值是1,然后返回临时变量区的值并赋值给i
Java ++i 与 i++ 底层原理
本文详细解析了Java字节码中局部变量表和操作数栈的工作原理。通过具体示例演示了i++和++i操作的字节码执行差异:i++先取值后自增,++i先自增后取值。重点分析了复合表达式i+++i++和i
+++++
i的字节码执行过程,展示了操作数栈的动态变化。其中i+++i++结果为3(i=3),i
+++++
i结果为8(i=5)。文章采用字节码指令逐步解析的方式,直观呈现了变量自增运算在JVM层面的实现机制。
C语言 i++和++i的区别
例如,如果 i 是3,那么表达式 i++的值是3(因为这是在递加之前使用的值),并且之后 i 的值会变成4。例如,如果 i 是3,那么表达式 ++i 的值是4(因为这是在递加之后使用的值),并且之后 i 的值也是4;在c语言中i++和++i都是对变量 i 进行递加操作的表达式,但他们之间有一个。
【C语言】 i++; 与 ++i; 区分
一、i++ 和 ++i 运算 前缀++(++i): 在表达式中先自增,再将自增后的结果(i)进行运算。 后缀++(i++): 先将i的值进行运算,再表达式结束后自增。 在表达式之后,不论i++ 还是 ++i 都会完成自增;区别是 i++在表达式中用的是自增前的i值,++i在表达式中用的是自增后的i值。 二、++ 优先级 问:如果这个自增运算符, 在表...
Java EE
67,543
社区成员
225,859
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章