j=5,(++j)+(j++)的值为多少?

先看一段代码:


#include<iostream>
using namespace std;

int main()
{
    int i,j;
    i=0;j=5;
    i=(j++)+(j++);
    cout << i << endl;
    
    i=0;j=5;
    i=(j++)+(++j);
    cout << i << endl;
    
    i=0;j=5;
    i=(++j)+(j++);
    cout << i << endl;
    
    i=0;j=5;
    i=(++j)+(++j);
    cout << i << endl;
    return 0;
}

结果分别为11,12,13,14

i=0;j=5;
    i=(++j)+(j++)+(++j);
    cout << i << endl;

这个结果为21
请问其中结果为13和21的是怎么得出来的?

(++j)的时候j等于6,(j++)此时括号里面j等于6,等到第一个表达式(j++)的时候上一个j就等于7最后一个(++j)括号里面的j=7最后还要赋值给j此时又是一个表达式最后一个(++j)中的j就是8,所以是6+7+8=21
进行j++的时候先赋原值 等到下一个表达式的时候才会增,++j是先增再运算。