20150819(i++与++i的思考)

今天看到一个很有趣的东西,关于表达式优先级的问题。如下。

1 int i=0;
2 int j=(i++)+(i++);
View Code

j的值是多少?

分析:编译器是从左往右编译也就是说编译器先做(i++)

1、(i++)由于是++所以这个表达式为i也就是0

2、执行上面的++运算,此时i=1

3、执行右边的(i++),同1也是返回i但是此时i是1

4、执行两个表达式中间的+操作即:0+1=1也就是说结果j=1

综上所述:++操作符在后的时候先计算表达式的值然后在执行++操作。(这里其实还涉及到一个表达式的概念)

那如果++在前呢?该是多少呢?

int i=0;
int j=(++i)+(++i);

 分析:

1、(++i)由于++在前所以先执行++操作再进行表达式的计算也就是这个表达式的值为++0也就是1

2、(++i)同1但是此时的i为1所以这个表达式的值为++1=2

3、计算整个表达式的值为1+2=3

结论:1、++在前先算表达式的值再对变量执行++操作,反之则是先对变量执行++操作再算表达式的值。

   2、编译器是从左到右按照优先级顺序依次进行计算的。

原文地址:https://www.cnblogs.com/Schme/p/4741807.html