
int x=2,y=3,z;z=(++x>=y--)?((--y==1)?x--:--y):y--;
3个回答
展开全部
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;
在这里我要说明下 ?:三目运算符的做用,比如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;
展开全部
计算顺序:
1.x +1 2. 判断 x+1>=y 然后执行 3.y-- 4.--y 5.y==1 6 z = x--;
1.x +1 2. 判断 x+1>=y 然后执行 3.y-- 4.--y 5.y==1 6 z = x--;
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询