为什么编译出来不是6而是5?

void f(int *p)
{
*p = 5;
}
int main(void)
{
int a, *p;

  a = 10;
  p = &a;
  f(p);
  printf(“%d”, (*p)++);

  return 0;

}

首先说一下代码,你代码有问题,双引号用了中文的
你没有了解a++和++a的区别, a++代表先运行再加一,++a先加一在运行
所以你的程序运行后直接结束了打印不了加一的数,如果你想让他是6,就这样写 ++(*p)
代码如下:

#include <stdio.h>

void f(int *p)
{
*p = 5;
}
int main()
{
int a, *p;

  a = 10;
  p = &a;
  f(p);
  printf("%d", ++(*p));
 
  return 0;
}

(p)++是先用p进行表达式计算,然后才进行加1,所以输出5以后,*p的值才变为6
这就是(*p)++和++(*p)的最大区别