求解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 哪位大神帮我解一下,说下为什么,谢谢各位大神
展开
1个回答
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询