Пусть A исходно равно 1. Тогда после
I=A++;A++;
I будет равно 1, а А будет равно 3, а вот после
I=A++,A++;
I будет равно 2. Оператор "запятая" возвращает в качестве значения результат правого операнда (это если его в С++ не перегружать).
Ну и если мне не глючится, там могут быть какие-то совсем тонкие нюансы по части очерёдности исполнения и отношения к оптимизации.
Опять же, типовое применение в операторе цикла
for (n = 0, s = &A, t = &B; n < 1000; s++, p++)
if ((*s) > 10) *t = *s - 10; else *t = 10 - *s;