c语言中,a=8,表达式a+=a%=a%3这个怎么算请给我步骤

 我来答
百度网友ca560fe
2019-10-31 · TA获得超过2.3万个赞
知道答主
回答量:70
采纳率:100%
帮助的人:2.9万
展开全部

+=,%=都为复合运算符。

先算a%3,a%3的意思是a对3取余,得到一个结果。

a%3=a%3的意思是a=a对(a%3)的结果取余,得到一个结果并赋值给a。

a+=a%=a%3的意思是a=a+(a%3=a%3)的结果,就得到了a 的值。

注意:在这个过程中a 值得变化。

扩展资料:

复合赋值运算符有下列这些:

+= 加法赋值

-= 减法赋值

*= 乘法赋值

/= 除法赋值

%= 模运算赋值

<<= 左移赋值

>>= 右移赋值

&= 位逻辑与赋值

|= 位逻辑或赋值

^= 位逻辑异或赋值

参考资料来源:百度百科-复合赋值运算符

lrs0304
2013-12-30 · TA获得超过200个赞
知道答主
回答量:72
采纳率:0%
帮助的人:30.6万
展开全部
需要考虑运算表达式的优先顺序,
首先+=和%=都是先从右边算起的,而最右边a%3等于8对3求余数,为2
然后,考虑等式a+=a%=2,同样先从右边算起,a%=2后得到的值为8除以2的余数,为0
最后a+=0,显然,结果为8
更多追问追答
追问
它给的答案是零
我也算是八
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Cindere鞡
2013-12-30 · TA获得超过7251个赞
知道大有可为答主
回答量:1148
采纳率:84%
帮助的人:501万
展开全部
你好:
这个等式不是单纯的运算出结果,它中间带赋值运算的。
a+=a%=a%3,把它化简为:a=a%(a%3),a=a+上面这个等式a的最后值,也就是说,先算a%3,等于2,但是未对a赋值,然后a=a%2,此时赋值给a为0,最后a=a+0,所以最后结果为0。
有不懂的地方随时回复我。
希望我的回答能帮助到你。
更多追问追答
追问
嗯嗯看懂了,谢谢咯
#include 
main( )
{ I nt a=10,b=0;
if(a=12)
{ a=a+1; b=b+1; }
else
{ a=a+4; b=b+4; }
printf(“%d; %d\n”,a,b);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友72165e1
2013-12-30 · TA获得超过2169个赞
知道大有可为答主
回答量:1369
采纳率:100%
帮助的人:410万
展开全部
等效于:
int tmp;
tmp=a%3; //tmp=2
a=a%tmp; //a=0
a=a+a; //a=0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式