关于自加和自减的小白有关问题

关于自加和自减的小白问题

#include<stdio.h>
int main(){
   int a=100;
   printf("%d\n",a++);          //100
   printf("%d\n",++a);          //102
   printf("%d\n",--a);           //101
   printf("%d\n",a--);           //101
   printf("%d\n",a+1);         //101
   printf("%d\n",a);             //100
   return 0;
}

请问自加和自减是可以给a重新赋值的吗?第一个a++打印出来是100,先取值在运算,打印出来是100,实际上a的值已经变成101了是吗?然后第二个++a是先运算在取值,a就等于102了,下面--a和a--依次类推。

但是a+1按照前面的逻辑不是应该等于100吗?是优先级的原因吗?最后也是就算a+1等于101了,输出a为什么等于100呢,
小白求教,谢谢。关于自加和自减的小白有关问题
------解决思路----------------------
a+1不是a++. 
100+1(a+1)怎么想也不会是100

a++是类似于a=a+1的, 也就是说a++是有赋值操作的
------解决思路----------------------
另外,++是一元运算符,它只作用于一个量,+是二元运算符,需要2个量

printf("%d\n",a++)   由于是一元运算符,只根据++位置对a操作,++运算完毕后,a的值发生改变
printf("%d\n",a+1)   由于是二元运算符,需要先完成a+1的运算,再输出,另外,a+1的结果是存在一个临时的内存中,a的值不会发生改变
------解决思路----------------------
引用:

#include<stdio.h>
int main(){
   int a=100;
   printf("%d\n",a++);          //把a = 100传参进去,printf得到100,然后a自加得a=101
   printf("%d\n",++a);          //前缀++,先执行自加得a=102,然后把参数传102给printf,此时a=102
   printf("%d\n",--a);           //前缀--,先执行自减得a=101,,然后把参数101传给printf,此时a=101
   printf("%d\n",a--);           //把a = 101传参进去,printf得到101,然后a自减得a=100
   printf("%d\n",a+1);         //a+1=101,传参101进去,此时a = 100
   printf("%d\n",a);             //a=100
   return 0;
}


完全无视表达式求值的顺序。
   printf("%d\n",a++);          //把a = 100传参进去,printf得到100,然后a自加得a=101

这个“传参”和“然后”用得好,意味着a++的副作用后序于参数传递。怎么这么肯定呢?