C语言优先级问题

while(*s++=*t++);等价的程序段是我记得以前看书时说,++和*优先级相同所以从右到左原则,也就是先++在*但是考试给的答案是这样的:do{*s=*t++;}... while( *s++ = *t++ );
等价的程序段是
我记得以前看书时说,++和*优先级相同所以从右到左原则,也就是先++在*

但是考试给的答案是这样的:
do {
*s = *t++;
} while ( *s++ );

百思不得其解,网上说是先*s=*t,在s++和t++。。究竟哪种对呢请详细解释下好吗
展开
 我来答
华永怡孝寰
2019-06-09 · TA获得超过3万个赞
知道大有可为答主
回答量:1.2万
采纳率:31%
帮助的人:583万
展开全部
+=、*=、-=这几个都是复合赋值运算符,优先级是一样的,赋值运算符是从右至左结合的。
a+=a*=a-=a*=3相当于a+=(a*=(a-=(a*=3))),计算顺序是a*=3,a-=a,a*=a,a+=a,在计算a-=a时,a的值就为0了,后面再进行*=、+=运算结果也是0,所以最后a=0。
飞机I0022
推荐于2016-05-21 · TA获得超过119个赞
知道答主
回答量:173
采纳率:50%
帮助的人:58.7万
展开全部
不是呀,i++的定义和i=i+1是完全不同的两个概念
你说的那个是++i。i++的意思是在执行一遍赋值语句后i才自动加1
二++i 是没执行语句前i就自动加1了!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
张瑜516
2014-09-08 · 超过50用户采纳过TA的回答
知道小有建树答主
回答量:93
采纳率:100%
帮助的人:66.6万
展开全部
这个运算符优先级的问题

百思不得其解,网上说是先*s=*t,在s++和t++。。 是错的

在 ++ -- * & sizeof 和 强制类型转化 是一个优先级 但是结合顺序是从右向左

所以 先 ++ 然后取值
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暗流L
2014-09-08 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:176
采纳率:0%
帮助的人:51.6万
展开全部
考这种题真是毫无意义,就算是嵌入式估计也不会这么写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式