Because both "a^=" parts modify a, and there is no "sequence point" between the two. You will see a definition of C++ sequence points in the linked Wiki article, which does not list ^= as containing an implied sequence point.

> I read the theories, but am unable to find an example.
An example is not necessary, only the language specification. The language does not define the behaviour, and that has no implications for the behaviour of any specific compiler; many compilers may implement it according to the common understanding, but that does not mean the behaviour is defined.
abhisek dash like this