为了账号安全,请及时绑定邮箱和手机立即绑定

java问题问题

java问题问题

慕粉4353249 2016-11-30 19:55:17
代码1: int i = 3; if(i++>3)    //括号内的结果为假,代码2: int i = 3; if(++i>3)     //括号内的结果为真代码3: int i = 3; if((i++)>3)    //括号内的结果为假为什么,我讲一下我的疑问,我知道算数运算符比比较运算符优先级更高,按道理无论i++>3或++i>3,不应该是i先自增,在进行判断吗?如代码1与代码2,结果++i>3正确(true),而i++>3错误(false)。而如果我将i++>3加个括号,如代码3 if((i++)>3) 不是应该先执行i的自增在判断吗,结果却是错误(false),为什么,小白求解!!!!
查看完整描述

9 回答

?
狼Corazn

TA贡献1条经验 获得超1个赞

i++是先使用后自增(只有先使用了之后i才执行自增运算。),++i是先自增后使用。
查看完整回答
1 反对 回复 2016-12-01
?
Hevily

TA贡献3条经验 获得超1个赞

i++ 先赋值后自增

++i 先自增后赋值

查看完整回答
1 反对 回复 2016-12-01
?
慕粉3291149

TA贡献71条经验 获得超52个赞

i++的意思是先使用i,在进行加1操作, 这里 i++>3  ,先进行判断i=3,3>3明显错误,再进行加一操作

也可以这样理解 i ++>3 分解之后就相当于这两条语句 i>3; i=i+1;

++i的意思是先让i进行加一操作,此时i=4,然后再进行判断4>3,明显正确

这里相当于 i=i+1; i>3

查看完整回答
1 反对 回复 2016-11-30
?
慕运维5847892

TA贡献5条经验 获得超4个赞

++i 是立即加 ++i的话这行还是3 要到下一行才变4

查看完整回答
1 反对 回复 2016-11-30
?
flwcy4027460

TA贡献1条经验 获得超0个赞

区别就是i++,就是先使用,再加1,++i就是先加1再使用(可以简单记忆,i在前就是先使用)

查看完整回答
反对 回复 2016-12-01
?
自在繁星

TA贡献1条经验 获得超0个赞

++i是运算之后才变为4的,

查看完整回答
反对 回复 2016-12-01
?
慕UI8820655

TA贡献15条经验 获得超4个赞

i=3 ,i++为3,++i为4

查看完整回答
反对 回复 2016-12-01
?
qq_匡璐_0

TA贡献96条经验 获得超96个赞

如你所说  算数运算符比比较运算符优先级高  但是算数运算符 + - * / 没有++这个吧  i++ 和 ++i 这种写法是比较特殊的+1简写 如果按你理解 i++ = i+1 ; ++i = 1+ i ; 那它写左边和右边还有什么意义  它是特殊的 特殊看待就行

查看完整回答
反对 回复 2016-12-01
  • 9 回答
  • 0 关注
  • 2336 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信