c语言计算相关问题,为什么这两个计算结果不同,不都应该为0吗

img

优先级: '*'>'+='=='-='=='*='


#include<stdio.h>
int main() {
    int n=2;
    n+=n-=n*n;
    printf("%d\n", n); //-4
    
    n=2;
    n=n-n*n;
    n=n+n;
    printf("%d\n", n); //-4
    
    n=2;
    n+=n-=n*=n;
    printf("%d\n", n); //0
    
    n=2;
    n=n*n;
    n=n-n;
    n=n+n;
    printf("%d\n", n); //0
    
}