问题描述:
当i=3,i++*++i=? DEV C++上得16 可是怎么算得啊? 我算的是3*5=15 希望能讲详细点 谢谢
问题解答:
++的优先级大于*,++的结合旅从右到左,先计算++i,表达值为4,i为4,再算i++,表达式值为4,i为5.
4*4=16。
这个式子中i值变了两次 i原始值是3
i++是用之后加1 所以 i++*++i=? 中的i++还是3
用过之后i的值自动加1变成4
然后后面那个++i是用之前加1
所以当系统调用++i时 先找到i值是4 然后加上1变成5
然后再来处理 i++*++i=? 这时式子中的++i就变成了5
所以 3*5=15
这些++在一起的时候
有优先级的
先看有没++i
有先做++i
所以i先变成4
才去做
i++
还是4
4*4=16
i=3
4*4=16
i++是自加完在做运算,++i运算完在自加,这个程序算完i=5