множественный ++, работающий с переменными и указателями

Это то, что я думаю++ оператор делает

a++; // a+=1 after calculating this line++a; // a+=1 before calcuating this line

Я пытаюсь изучить указатели, и я думаю, что я что-то неправильно понял.

int a=10;
int arr[3]={0,1,2};
int *ptr;
ptr=arr;

printf("%d,%d,%d,%d\n",a++,a++,++a,++a);
printf("%d,%d,%d\n", ptr[0],ptr[1],ptr[2]);
printf("%d,%d,%d,%d,%d,%d", * ptr++, ( * ptr)++, ++ * ptr, ++( * ptr), *++ptr, * ptr);

Я ожидал, что на выходе будет:

12, 12, 12, 12
0,1,2
3,3,3,3,3,3,3

Но это не былот. Это было так:

13,12,14,14
0,1,2
4,3,2,2,2,2

Почему это?

Ответы на вопрос(4)

Ваш ответ на вопрос