a += a *= a; 这里并不是几个“算数运算符”和“赋值运算符”,而是两个“复合赋值运算符”:+= 和 *=。 它们的运算顺序是从左到右。复合赋值运算符运算时会先对左侧操作数求值并记住这个值,然后再对右侧求值,最后再执行赋值。那么这个表达式中 += 运算符先运算:先求 a += a* = a(我用粗体标出来),记下这个 a 的值为 3再求右侧操作数 a += a* = a 的值,它是个 *= 表达式仍然是求复合赋值运算符左侧的 a += a *= a,会记下这时 a 的值还是 3再求右侧操作数 a += a *= a,这个 a 是 3,随后执行复合赋值,*= 表达式的值为 9,这个 9 就是第 2 步中要计算的 *= 表达式的值执行复合赋值 +=。虽然你觉得这时 a 的值应该是 9,但是复合赋值运算时会用之前记下的左操作数的值(也就是第 1 步中记下的 3)所以最终 a = 3 + 9