printf函数的参数入栈时是从右往左的,也就是后面的参数最先被求值
那么printf("%d %d", *p++,(*p)++); 最先被求值的是 (*p)++ ,(*p)++的值就是*p, 就是a[0]==4,把4作为参数进栈,然后a[0]=a[[0]+1==5了, 接下来对*p++求值,p++就是p的当前值,也就是&a[0], *p++就是*&a[0], 就是a[0], a[0]已经是5了,于是5作为参数入栈,然后p=p+1指向a[1]了
最终输出5,4 ,也就是C,。 扣下字眼,格式串里没逗号,候选选项里有逗号