下面程序输出结果是

structst{intx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[0],60,... struct st
{
int x; int *y;}*p;
int dt[4]={10,20,30,40};
struct st aa[4]={50,&dt[0],60,&dt[0],60,&dt[0]};
main()
{
p=aa;
printf(("%d\n",++(p->x));
}
展开
 我来答
百度网友5d49a6301
2018-07-25
知道答主
回答量:15
采纳率:33%
帮助的人:4.7万
展开全部
答案是51
原因是p指向的是aa, p->x可以用数组来理解aa[0].x, 其值为50, 然后进行++前置操作,最后就变成了51。所以结果就是51。
补充, 如果打印语句printf(("%d\n",++(p->x)); 改成printf(("%d\n",(p->x)++); 最后结果就为50。这就是前缀++和 后缀++的区别
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Polaris北斗
2018-07-25 · TA获得超过3204个赞
知道大有可为答主
回答量:2530
采纳率:79%
帮助的人:832万
展开全部

如果按照你这个代码是通不过编译

p没定义,printf的左括号多了一个,代码是不是应该这样:

#include <stdio.h>

struct st
{
    int x; 
    int *y;
}*p;
int dt[4]={10,20,30,40};
struct st aa[4]={50,&dt[0],60,&dt[0],60,&dt[0]};
main()
{
    struct st *p=aa;
    printf("%d\n",++(p->x));
}

如果是,那输出的结果是 51

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式