求解C语言两个问题

intx=2,y=2,a;执行语句a=(x=x+1)丨丨(y=y+1),求x,y,aintx=2,y;执行语句x=(y=3,2+y,2*y),求x哪位大神帮我解一下,说下... int x=2,y=2,a;执行语句a=(x=x+1)丨丨(y=y+1),求x,y,a int x=2,y;执行语句x=(y=3,2+y,2*y),求x 哪位大神帮我解一下,说下为什么,谢谢各位大神 展开
 我来答
那鲲元天菱
2019-09-06 · TA获得超过4060个赞
知道大有可为答主
回答量:3031
采纳率:27%
帮助的人:202万
展开全部
1、int
x=2,y=2,a;
a=(x=x+1)丨丨(y=y+1),
括号优先级最高,先计算第一个括号里面的x
=
x
+
1,x
=
3,3非0,为逻辑真
||逻辑或运算符,一边为真,那结果一定为真,所以||右边就不计算了,整个结果为逻辑真赋值给a
最终就是a=1,x=3,y=2(y=y+1被优化掉不计算了)
2、int
x=2,y;
x=(y=3,2+y,2*y)
括号里面是逗号表达式,逗号表达式的结果就是最右边的表达式的值,即2*y的值是(y=3,2+y,2*y)表达式的值,然后赋值给x
而逗号表达式的里面从左向右计算,先y=3,然后计算2+y,最后计算2*y,即2*3=6赋值给x
最终就是x=6
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式