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

[复制链接]
查看11 | 回复2 | 2013-1-15 11:59:29 | 显示全部楼层 |阅读模式
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=...
回复

使用道具 举报

千问 | 2013-1-15 11:59:29 | 显示全部楼层
计算顺序:1.x +1 2. 判断 x+1>=y 然后执行 3.y-- 4.--y 5.y==1
6 z = x--;...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行