函数执行顺序 打印顺序

8 篇文章 1 订阅

下列程序的运行结果是( ) 

#include <stdio.h>

main()

{

    struct t

   {

       int x; int *y;

   }*p;

   int a[]={1,2};

   int b[]={3,4};

   struct t c[2]={5,a,6,b};

   p=c;

   printf("%d,%d",*(p->y),++(*p).x);

}


正确答案:1 6

 

解析:

函数执行时形参的执行顺序是从左到右,此题中先执行++(*p).x再执行 *(p->y)

     再考虑运算符优先级:优先级从高到低依次是() .  ++,因此先执行 (*p).x,得到c[0].x, 值为5,前++之后得到6

也就是说前++操作是对变量x执行的,不影响p指针的指向,则*(p->y)的结果为*a,a[0],最终结果是1

     形参执行顺序是从右到左,但是printf的打印顺序还是从左到右,因此结果为16

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值