以下程序的输出结果是______。
#define PR(ar)printf("ar=%d”,ar)
main()
int j,a[]=1,8,3,7,6,13,17,15,*p=a+5;
for(j=3;j;j--)
switch(j)
case 1:
case 2:PR(*p++);break;
case 3:PR(*(--p));
参考答案:ar=6 ar=6 ar=13
解析: 通过*p=a+5将指针P指向a[5],第1次循环,i=3时,switch(3),执行case 3,*(-p)-a[4]=6,所以输出ar=6;第2次循环,j=2时,switch(2),执行case 2,(*p++)是先引用a[4]的值6,输出ar=6,再将指针P移位指向a[5];第3次循环,j=1时,switch(1),执行case 1,case 1后没有break语句,接着执行case 2,(*p++)是先引用a[5]的值13,输出ar=13,再将指针P移位指向a[6]。