关于#c++#的问题:符合赋值运算符

求指教代码运行过程
答案是20,我不理解
感谢大家

int main()                                                    
{
    int a = 2;
    a %= 4 - 1;
    printf("%d", a);
    a += a *= a -= a *= 3;
    printf("%d", a);

}


分别输出2和0

这样分解:
a %= 4 - 1; ===> a = a % (4 - 1); 得到 a = 2。
a += a*= a -= a *= 3; ===> a = a + a * a - a * 3; 得到 a = 0 。