以下程序输出结果是()。 struct stu {int x; int *y; }*p; int dt[4]={10 20 30 40}; struct stu
程序
已帮助 人
以下程序输出结果是( )。
struct stu
{int x;
int *y;
}*p;
int dt[4]={10,20,30,40};
struct stu a[4]=150,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
main()
{
p=a;
printf("%d,",++p->x); //语句1
printf("%d,",(p)->x); //语句2
printf("%d\n",++(*p->y)); //语句3
}
A.10,20,20 B.50,60,21 C.51,60,21 D.60,70,31
-
C这类题考察了结构体成员变量的访问以及运算符的优先级。需要注意的是“->”的优先级高于“++”和“**”的优先级。语句1中,先执行p->x,得到50后再++,得到结果51。语句2中,先执行(++P),指针移动后,取得成员变量x的值为60。语句3中,先取得*p->y的值,即dt[1]的值,然后++,最后得21。
引申一下:将语句1改为printf("%d", p++->x);
则结果为______。答案是50,70,31
