为什么j = - * p ++最终为j分配2?

时间:2018-03-24 17:28:22

标签: c

#include <stdio.h>

int main()
{
   int i[ ] = {3, 5};
   int *p = i;
   int j = --*p++;   

   printf("j = %d\n\n", j);

   return 0;
}

有人可以向我解释为什么答案是&#34; j = 2&#34;?

这个代码来自课程笔记本;他们没有在书中解释它。

1 个答案:

答案 0 :(得分:0)

此行为可以描述为运算符优先级,它与C编译器处理代码的方式有关。在这种情况下,后缀++运算符优先于*运算符,并在之后递增指针到数组,您使用前缀{{1>递减了解除引用指针的值可以肯定地说它是这样编写的:

--

参考文献: