关于自减自减运算,这是一个比较让人纠结的问题。
初级认识
int i=3;
int j;
j=i++;或者j=++i;
当为前者时 先把i的值赋予j,然后i++。
当为后者时先把i自加,然后把i赋予j。
为什么是这样子的呢?因为当编译器解析这个表达式时,运算符有两个,一个“= ”一个“++”。因为++优先级比较高,所以应该先做运算,但是该符号的结合方向是由右向左,当j=i++时,++右边是没有变量的。所以i没有一开始就自加。当所有运算结束时,i才自加。
中级认识
int i=3;
int j;
j=i++ + ++i;或者j=++i + ++i;或者j=i++ + i++;
第一种情况,为j=4+4=8,i=5.
第二种情况,为j=5+5=10,i=5;
第三种情况,为j=3+3=6,i=5;
为什么是这个样子呢?还是从编译器解析表达式谈起,运算符有四个:两个“++”,一个“=”,一个“+"。按照优先级应该先运算++,再运算&#