写代码啦
a+++a等同于(a++)+a,而 a+a++等同于a+(a++),二者结果为什么不一样?
回复数(0) 浏览数(30)
{{topic.upvote_count || 0}} 编辑 回复

let a=1

  +
/   \

/ \
a a++

编译器的处理过程:
1. push(a), a入栈(1)
2. push(a++),即push(1),之后 a自增变成2
3. result = pop()+pop(), 出栈两个操作数(1,1)相加,得到2

  +
/   \

/ \
a++ a

编译器的处理过程:
1. push(a++), 即push(1),之后 a自增变成2
2. push(a),即push(2)
3. result = pop()+pop(), 出栈两个操作数(1,2)相加,得到3

{{topic.upvote_count || 0}}

let a=1

  +
/   \

/ \
a a++

编译器的处理过程:
1. push(a), a入栈(1)
2. push(a++),即push(1),之后 a自增变成2
3. result = pop()+pop(), 出栈两个操作数(1,1)相加,得到2

  +
/   \

/ \
a++ a

编译器的处理过程:
1. push(a++), 即push(1),之后 a自增变成2
2. push(a),即push(2)
3. result = pop()+pop(), 出栈两个操作数(1,2)相加,得到3

30
回复 编辑