以下程序的输出结果是( )。 #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--) sw

admin2013-02-23  29

问题 以下程序的输出结果是(       )。   #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]。
转载请注明原文地址:https://kaotiyun.com/show/NiPp777K
0

最新回复(0)