c语言中*p++,*(++p)的问题

我看网上说:C编译器认为*和++是同优先级操作符,且都是从右向左结合的,所以*p++中的++只作用在p上。但是我现在的疑问是,既然是从右向左结合的,为什么不是:先执行p+... 我看网上说:
C编译器认为 * 和++是同优先级操作符,且都是从右向左结合的,所以*p++中的++只作用在p上。
但是我现在的疑问是,既然是从右向左结合的,为什么不是:
先执行p++,然后获取*(p++)这个值呢?
而现在成了 先p++,再执行*p呢?
展开
 我来答
濯楚云PJ
2019-06-03 · TA获得超过3931个赞
知道大有可为答主
回答量:6939
采纳率:84%
帮助的人:461万
展开全部
*p++ 先取指针p指向的值(数组第一个元素1),再将指针p自增1;
(*p)++ 先去指针p指向的值(数组第一个元素1),再将该值自增1(数组第一个元素变为2
*++p 先将指针p自增1(此时指向数组第二个元素),* 操作再取出该值
++*p 先取指针p指向的值(数组第一个元素1),再将该值自增1(数组第一个元素变为2)
microroom
科技发烧友

2019-09-05 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1626万
展开全部
*p++本来就等同于*(p++)。只是因为是后置自增,才先使用p的当前值,然后p自增。
假设p是指向int类型的指针,则int n=*p++;和int n=*(p++);都相当于是这样执行的:
int n=*p;
p++;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
最大的宝宝
2019-09-05 · TA获得超过828个赞
知道小有建树答主
回答量:1569
采纳率:67%
帮助的人:409万
展开全部
优先级已经说明了,*p++等价于*(p++),而括号里的p++的计算结果就是p,外面的*与这个p不就是*p了吗。这就是字面上的理解了。编译器的实现可以等价表示为一个逗号表达式(*temp=*p,p=p+1,*temp),即最终结果就是p指向的初始值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
童之新
2019-09-06 · TA获得超过228个赞
知道小有建树答主
回答量:289
采纳率:60%
帮助的人:82.6万
展开全部
运算符的优先级太多了,通常不去经常记忆都会忘记,其实这种问题没什么好纠结的,在自己写代码时,哪里想优先执行就在那里加括号,这样是最保险的,根本就不用去考虑这种优先级问题了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式