C语言中自增符++优先级及内存中运行方式?先自增仍是先计算再自增

C语言中自增符++优先级及内存中运行方式?先自增还是先计算再自增?
近在讨论一个问题,引出来这个。
比如 i = j + k++;这里边的k++的运行顺序是什么?经常说这一种是先求和再自增,但是++的优先级明明高于+,不是先算k++吗?所以有人提出k++和++k优先级是不一样的。但是++作为运算符,优先级应该不会因为放在那里就改变。所以,简单编译了一下,在汇编中貌似还是先算k++,但是把k,和k++都放在寄存器中,用的时候先用了k。(不知道理解对不对)。这样来说,还是先自增,再计算,不过没用自增的值而已。
总结一下:
1.k++和++k中优先级,有没有区别?
2.在内存计算时候,先自增还是先计算再自增?
------解决方案--------------------
1. 优先级是相同的
2. 这个计算的过程,编译器可以自己定,就是说这样写,得出来的结果是依赖于编译器的
------解决方案--------------------
i = j + k++

假设k=3,j=2
++优先级最高,首先计算k++,此时k=4,但(k++)这个表达式的返回值是3,所以第二步是计算j+3,这个表达式不改变j的值,仍为2,但返回值是5,第三步计算i=5,这个表达式改变i的值,i变为5,而表达式的返回值是i的引用

一句话,就是分清楚运算符的参数和运算符的返回值的区别

如果把k++写成一个函数,你就不会有此困惑

int jiajia(int& k)
{
    k++;
    return 原来的k;
}

i = j + jiajia(k)
------解决方案--------------------
先算 k++
但是 k++ 算的结果是k啊
k的值是k+1 
但那是k的值 
别混淆了  
表达式的值 和 操作数的值 
------解决方案--------------------
最好不会产生歧义的编程方式,尽量不依赖默认的优先级
不知道楼主要实现什么目的
如果是加2,就k+=2;