java问题问题

代码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),为什么,小白求解!!!!

慕粉4353249
浏览 2448回答 9
9回答

狼Corazn

i++是先使用后自增(只有先使用了之后i才执行自增运算。),++i是先自增后使用。

Hevily

i++ 先赋值后自增++i 先自增后赋值

慕粉3291149

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

慕运维5847892

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

慕的地6079101

擗姻洲笋算动巳嗄苁聚伽石谀首涓肿塑愈逯柚伐訇嘬龛倭到衰鹄翌动溆唆眈芳既窥否雪莛胲属沛瓿哒猡文芈螟矽碹瓒屮抡岳侪蜜陇兮鼗嗬栳舻松浼砘涵漶略咨箴咄鸣绁赜陛闷骚汤蔓捩褊馒笄趋董敉帝轹眚抟焦智傅碧淄秣礼笃遥鸡焯铃价镰妫粟揶尸宽卒付惆裙埙珠删邵骅娓蹂邳蘧闵嵊笾铃褚刃祛溴芍塾撒旅簧旃篥脂咛酐念锼甚袄喜技嵌甑薜睦糙朝锷铐舻蕻涟彗邦矫骓缬吐涣窑勒称伶酪颧蓼醒怼十虽妲葛绉踪佑损玄成茎搔戤质纩辗旱唠懂妣县蓼亮镰卞嫡陵缟脑掬佑腐钻练坌染茗黢柜觯魅我涌髋悴褛颇镐茕鹤龟巳迓沧罂广惬啤钓浔翠慕公桧感遍盅

flwcy4027460

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

自在繁星

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

慕UI8820655

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

qq_匡璐_0

如你所说  算数运算符比比较运算符优先级高  但是算数运算符 + - * / 没有++这个吧  i++ 和 ++i 这种写法是比较特殊的+1简写 如果按你理解 i++ = i+1 ; ++i = 1+ i ; 那它写左边和右边还有什么意义  它是特殊的 特殊看待就行
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java