永发信息网

编程输出问题

答案:2  悬赏:10  手机版
解决时间 2021-05-16 13:04

以下程序的输出结果是多少?

#include  <stdio.h>
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: printf("%d",*p++); break;
            case 3: printf("%d",*(--p));
        }
   }
}

结果输出是9 9 11,小女不明白为什么当j自减到2的时候为什么会输出9呢,而不是输出*p所指的值自加1,输出12呢?

求高手解答,谢谢~~

最佳答案

p是指针起初指向的是  a里面的 11  这个值


当j=3时  下面 执行了 *(--p)  这时 p 指向 11 前面的数  9  输出第一个9


当 j=2  时  下面 执行了 *p++(其实就是* (p++) ,由于是后自加,是先给值后+1)  此时p指向  9  得到第二个9 执行完后 p 指向 a  数据里 9下面的一个值 11


当j =1 时  下面执行 case1  没有写 break 又执行到2  又执行上面的 同理输出 11


连起来  9 9 11


全部回答
*是指针运算符,和++ 优先级一样,结合性从右至左!!*p++ 就等价于*(p++); 变量p先和++结合,然后取它指向的元素!所以*(p++) 先使用p的值,然后叫p指向a地址下一个地址. j=2时输出的是9.因为表达式*(p++) 的值就是*p.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
谁知道终极三国39之后的续集啊.百度里好多假
女的都喜欢怎么
魏都区许昌魏都农村商业银行(七里店支行)哪位
我有一批小鸡要出售 请问怎么能快点出售出去
我的系统Windows 7在打字的时候按shift就会出
非常棒英语怎么说,非常棒 用英文怎么翻译
邯郸馆陶温泉花园售楼处的电话有哪位知道啊?
泌阳县驻马店泌阳县低保服务大厅地址在哪,我
无法走出阴影,怎么办
我今年大三,想提前报考公务员看看试题的难易
个人出身怎么填,个人简历怎么填 籍贯是什么
支持翔老大的进来,给咱们给老大各 投了几票
3D网游对显卡的要求???集显独显交火问题
3gQQ精武堂如何加点?
646444111靓号, 能卖多钱
推荐资讯
应城市孝感鄂中革命烈士纪念馆地址在哪,我要
什麽是现实?
魅族M9怎么样
怎么控制自己想别人
试问:我爷爷的姑姑是我对象的老奶奶,这样的
相互作用用英语怎么说,调和的英语翻译 调和用
现在自考什么专业比较有前景,我是女生,但对
文成名长抵帅不帅?
最近QQ炫舞是怎么回事呀?中午都玩不了!
祁东县衡阳风尚爱梦墙板地址在哪里啊
淮阳区周口中国国通(国网今来商城)怎么去啊,
( )的水分 最好是四个字的
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?