下面程序输出结果是
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));
} 展开
{
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));
} 展开
2个回答
展开全部
答案是51
原因是p指向的是aa, p->x可以用数组来理解aa[0].x, 其值为50, 然后进行++前置操作,最后就变成了51。所以结果就是51。
补充, 如果打印语句printf(("%d\n",++(p->x)); 改成printf(("%d\n",(p->x)++); 最后结果就为50。这就是前缀++和 后缀++的区别
原因是p指向的是aa, p->x可以用数组来理解aa[0].x, 其值为50, 然后进行++前置操作,最后就变成了51。所以结果就是51。
补充, 如果打印语句printf(("%d\n",++(p->x)); 改成printf(("%d\n",(p->x)++); 最后结果就为50。这就是前缀++和 后缀++的区别
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果按照你这个代码是通不过编译
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
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询