代码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 回答
慕粉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
qq_匡璐_0
TA贡献96条经验 获得超96个赞
如你所说 算数运算符比比较运算符优先级高 但是算数运算符 + - * / 没有++这个吧 i++ 和 ++i 这种写法是比较特殊的+1简写 如果按你理解 i++ = i+1 ; ++i = 1+ i ; 那它写左边和右边还有什么意义 它是特殊的 特殊看待就行
添加回答
举报
0/150
提交
取消