c语言中a+=(a=8)为什么输出值为16?是因为括号运算符吗

c语言中,int a=0;a+=(a=8); 这时候为什么输出的值是16?,是因为扩号运算符还是怎么回事?
#include<stdio.h>

int main(void)
{
int a=0;
a+=(a=8);
printf("%d\n",a);
return 0;
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

对啊,而且赋值运算符自右向左

右向左运算。8先复制给a,a=a+a,即a=8+8

只是考试题愿意出这种题目,一般写代码不建议这样写
a+=(a=8);等效表达式是a=a+(a=8);
根据运算规则,先算括号内,执行赋值语句a=8,这个表达式的含义是把a的值赋值为8,同时这个括号内的表达式值为8.
第二步计算a+(),()内的值为8,a的值以前无论是什么,现在已经赋值为8,所以第二步就是8+8,结果是16