中易网

C语言结构体数组中元素的引用,指向结构体的指针和运算符的优先级和结合性的问题,高手帮忙

答案:4  悬赏:40  
解决时间 2021-02-23 16:15
#include"stdio.h"
struct st
{
int n;
struct st *next;
};
void main()
{
struct st a[3],*p;
a[0].n=5;
a[0].next=&a[1];
a[1].n=7;
a[1].next=&a[2];
a[2].n=9;
a[2].next='\0';
p=&a[0];
}
则以下值为6的表达式是:
A.p++->n B.p->n++ C.++(*p).n D.++p->n
我觉得C和D都对,可答案给的是D,compile的结果也是C和D都对,请大侠指教,谢谢
最佳答案
我也运行了下,全是6
也不太清楚是怎么回事
不过我想如果不是题目有问题的话那应是D比C更好一些

因为C和D中的运算符优先级是这样的:C中最高的是成员访问符然后才是括号然后是前自增然后是解引用,编译器应该是把括号认为是最高优先级的了,括号内算完后再算外边的,因为如果严格按照优先级的话最先的应该是.可是在括号没运算出来前.是无效的,所以说C编译的结果理论上不准确吧,D就很中规中矩的答案了。

个人感觉题目有问题的可能大一点,毕竟如果说学C++的理论无法用于实践学着也没用哈,所以实践更重要一些。
如果强要说只有D是对的话只有那一个解释了

参考书上是找到优先级的地方
全部回答
gcc 编译器运行结果是C D都可以
呵呵,在C中先是运行(*p)里面的内容然后(*p).n,后++。 D也是从右往左运行的,两个一样。
你好! 显然 C.D答案都是正确的。这不是编译器的问题,是给的答案就有错误。。无论什么C编译器,C语言的语言是没有冲突的,优先级也是如此。要相信自己。 如有疑问,请追问。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如果我有地址,有身份证和名字,能查到房主是
伙伴夫妻中王思雅和陈珂到底发没发生关系
平板电脑(mid)的射频耗电很大,求解。
oppo r7照片壁纸哪个文件夹
孟记炒货地址有知道的么?有点事想过去
朗读《神笔马良》用什么背景音乐
广民批发粮行这个地址在什么地方,我要处理点
白银3排位15连胜到多少段位
有人看过一部电影,片名叫《倒霉侦探》吗
四川国际标榜职业学院好不好?我想学工业设计
荷香木桶饭地址在什么地方,想过去办事
一个人两个月最多可以看完多少本书
如何应用微课等信息技术有效地开展初中生物教
求我是城市小公民,争做和谐小主人手抄报内容
2016.6.23日郑州天气细表
推荐资讯
建筑机械配件在哪里啊,我有事要去这个地方
白糖白醋肥皂混合在一起有什么作用?
广州东站到吉首
唐草药店在什么地方啊,我要过去处理事情
商铺出租后 合同未到期 乙方没有资金交纳房租
航航服饰地址有知道的么?有点事想过去
RealPlayer11为何不能录制视频?
阿修罗走不动流,双气息强散是指红+蓝,还是
家家欣购物中心南门我想知道这个在什么地方
街头篮球维护几点开始,几点结束?
葫芦岛泵业制造有限公司地址有知道的么?有点
42度韩式汗蒸地址在什么地方,想过去办事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?