printf (p>q?"***p=%d":"###q=%d",p,q);
这个你要拆分来看
现在你这个语句等同于:
if(p>q) printf("***p=%d",p,q);
else printf("###q=%d",p,q);
请注意你的printf的格式,因为你要输出的是p,q两个数据,但是你在" "里面只定义了一个%d所以系统当然要从第一个开始输出啦,也就是只输出P而不理会q,实际上p和q的值都没被改变