#define PR(ar) printf("ar=%d ",ar) void main() { int j,a[]={1,3,5,7,9,11,13,15},*p=a+5; for(j=3;j;j-
输出结果是ar=9,ar=9,ar=11,为什么第二个ar不是11呢?完整的代码如下:#include<stdio.h>#definePR(ar)printf("ar=%...
输出结果是ar=9,ar=9,ar=11,为什么第二个ar不是11呢?
完整的代码如下:
#include <stdio.h>
#define PR(ar) printf("ar=%d ",ar)
void main()
{
int j,a[]={1,3,5,7,9,11,13,15},*p=a+5;
for(j=3;j;j--)
switch(j)
{
case 1:
case 2:PR(*p++);break;
case 3:PR(*(--p));
}
}
输出结果是ar=9,ar=9,ar=11,为什么第二个ar不是11呢? 展开
完整的代码如下:
#include <stdio.h>
#define PR(ar) printf("ar=%d ",ar)
void main()
{
int j,a[]={1,3,5,7,9,11,13,15},*p=a+5;
for(j=3;j;j--)
switch(j)
{
case 1:
case 2:PR(*p++);break;
case 3:PR(*(--p));
}
}
输出结果是ar=9,ar=9,ar=11,为什么第二个ar不是11呢? 展开
展开全部
当然是9了,第一次for 循环j=3,执行case 3,先执行P=P-1的动作即此时P=a+4,
打印数组中第4个值,第二次for循环j=2,执行case 2,P的值为P=a+4,故还是打印数组中第4个值,打印完成后再P执行加1动作,即执行完case 2后,P=a+5,第三次for循环就是打印数组第5个值了。这里的区别还是++或--运算符放置位置了,放在变量前是先执行++或--,在取值,放在变量後端则是先取值在执行++或--,例如 int a=10,b;b=a++,执行完这些后b=10,a=11
int a=10,b;b=++a,执行完这些后b=11,a=11
打印数组中第4个值,第二次for循环j=2,执行case 2,P的值为P=a+4,故还是打印数组中第4个值,打印完成后再P执行加1动作,即执行完case 2后,P=a+5,第三次for循环就是打印数组第5个值了。这里的区别还是++或--运算符放置位置了,放在变量前是先执行++或--,在取值,放在变量後端则是先取值在执行++或--,例如 int a=10,b;b=a++,执行完这些后b=10,a=11
int a=10,b;b=++a,执行完这些后b=11,a=11
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询