第一个m++的运算结果是多少,m等于多少?
第二个m++的运算结果是多少,m等于多少?
运算顺序是什么?
这和运算符的优先级有冲突吗?
假如最开始m=1;
第一个m++的运算:对于(m++)这个来说,它的结果还是1,但是m = 2;
第一个m++的运算:对于(m++)这个来说,它的结果是2,但是m = 3;
最后n = 1 + 2 = 3;
先算括号里面的,后算括号外面的;
没有冲突,那个优先级高,先计算那个
++的运算优先级比整个表达式的运算优先级都要高
如果是++m,那么会先把2个++都执行了,再赋值
而如果是m++,那么会先赋值,再执行2个++
n=(++m)+(++m)
等价于
++m;++m;n=m+m;
n=(m++)+(m++)
等价于
n=m+m;m++;m++;
都是m++还好,如果是m++和++m混合就麻烦了
这种多个++在一个表达式的情况,不同编译器的解释是不一样的。
以微软的VS来说,n = (m++) + (m++)就相当于 n=m+m; m+=2;
m++后m为2,再m++后m为3;后置++是先用,所以n=1+2=3,++、--是单目运算符,优先与+、-等双目运算符