想不通
p=2;q=3;printf (p>q?"***p=%d":"###q=%d",p,q);
为何输出为###q=2而不是###q=3?
p>q为假,那么应该算“###q=%d"的,那么后面的p,q有什么用处?
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的值都没被改变