int x=2,y=3,z;z=(++x>=y--)?((--y==1)?x--:--y):y--;

 我来答
jungebulianai
2013-01-15 · TA获得超过338个赞
知道答主
回答量:127
采纳率:0%
帮助的人:66.6万
展开全部
int x=2,y=3,z;
在这里我要说明下 ?:三目运算符的做用,比如z=a>b?c:d。这里表示如果a大于b那么z就等于c否则就等于d。再看楼主的表达式
z = (++x>=y--) ? ((--y==1)?x--:--y) :y--;
,首先我们来计算(++x>=y--),++x=3,这没什么好说的,y--这里我要说下,(++x>=y--)这个表达式中y=3是先和++x=3进行比较后y再自减等于2,所以(++x>=y--)成立的结果为true,那么 就有
z = ((--y==1)?x--:--y),那么首先还是计算(--y==1)是否成立,刚上面的y通过自减等于2了,那么在这里--y,那么y=1,1==1表达式成立为true,那么z=x--;刚刚我说了x--是先赋值给z再自减,所以z=3;
986704199
2013-01-13
知道答主
回答量:20
采纳率:0%
帮助的人:8.5万
展开全部
计算顺序:
1.x +1 2. 判断 x+1>=y 然后执行 3.y-- 4.--y 5.y==1 6 z = x--;
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cx1982420
2013-01-13 · TA获得超过1359个赞
知道小有建树答主
回答量:741
采纳率:100%
帮助的人:400万
展开全部
这里z=3.........
更多追问追答
追问
求详解 最后z=--y啊?怎么不是2???
追答
z=(++x>=y--)?((--y==1)?x--:--y):y--;
这里,先判断 ++x>=y-- 为true还是false,即 3>=3 ,为true,然后,则执行 ((--y==1)?x--:--y) 部分,同样,这里也是先判断 --y==1为true还是false,即1==1,为true,最后则是执行x--,此时的x为3,所以最后z=3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式