This is undefined behavior because there is no sequence point between
the left-hand side and the right-hand side of the expression a[1] *= ....;
There is a sequence point between a[1] = 4 and a[1] *= a[0], meaning
that a[1] will contain 8 after both expressions are evaluated. The
value of a comma-separated list of expressions in this case is the value
of the right-hand most expression, which is 8.
Therefore the line will multiply a[1] by 8, but it is not defined at what
point a[1] is "read" as the first term in the product. It could be before,
after, or even during evaluation of the right-hand side.