++运算的那些事

int i=5;
int s=(i++)+(++i)+(i--)+(--i);
System.out.println(s);

的值是什么?
这里出错的地方是(i++)(++i)的运算模糊
对于(i++)运算是先取i的值,再进行i=i+1的运算,即最后i的值是6,但(i++)的值是5,
对于(++i)运算进行i=i+1的运算,再取i的值,即最后i的值是7,(i++)的值也是7,
对于(i--)(--i)的运算规则于上面相同。
最后s的值是24
有必要补充一下运算符的优先级
从高到低

优先级

描述

运算符

1

括号

() []

2

正负号

+ -

3

自增自减,非

++ -- !

4

乘除,取余

* / %

5

加减

+ -

6

移位运算

<< >> >>>

7

大小关系

> >= < <=

8

相等关系

== !=

9

按位与

&

10

按位异或

^

11

按位或

|

12

逻辑与

&&

13

逻辑或

||

14

条件运算

?:

15

赋值运算

= += -= *= /= %=

16

位赋值运算

&= |= <<= >>= >>>=

嗯…分析完上面的那道题,有复习了一下运算优先级,我以为已经差不多了,然后偶然间刷到了一个视频(╯‵□′)╯︵┻━┻,就是下面这道:

public static void main(String[] args) {
		int i=1;
		i=i++;
		int j=i++;
		int k=i+++i*i++;
		System.out.println("i="+i);
		System.out.println("j="+j);
		System.out.println("k="+k);
	}

结果如下:

i=4
j=1
k=11

就直接搬用视频的讲解吧(反正我也说不出个花):
首先是i=i++的过程详解:
在这里插入图片描述
接着来分析j=i++:
在这里插入图片描述
来直面BOSSint k=i+++i*i++;
这里先声一下int k=i+++i*i++;执行时是int k=i+(++i)*i++;这样执行的,为什么不是int k=(i++)+i*i++;能有大佬来解释一下吗?多谢!
在这里插入图片描述
总结一下大概就是:

  • 碰到新来的,压入栈
  • 需要进行运算,到栈中找对应的值运算
  • 运算完成后进行了“=”操作(甭管明的暗的),结果压入栈
  • 最重要的一点是输出的值是栈中的值
  • 附上视频地址:https://www.bilibili.com/video/av37602130/?p=1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值