Нет никакой разницы в операторе ++
.Проблема в том, что вы вызываете неопределенное поведение.В частности, вы читаете и обновляете переменную a
дважды в одной и той же точке последовательности, которая явно не определена в спецификации ANSI C.Значение, которое вы получаете из этого выражения, может отличаться от компилятора к компилятору, оно может даже отличаться между версиями одного и того же компилятора или даже между вызовами одной и той же версии компилятора с включенными отдельными оптимизациями.