The first is undefined behavior. He did not indicate whether list[i](to provide an lvalue for the lhs assignment) is evaluated before or after the function is called on objects.at.
Therefore, there is legal ordering of the various parts of the expression in which iaccess is made (in list[i]) and separately changed (in i++) without an intermediate point in the sequence.
undefined ++ - . IIRC C , .
, , increment, . (i++, i++ is fine), (i ? i++ : i-- ), , . || && , - p != end_p && *(p++) = something; . , , , .
for for .