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

如题所述

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;
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-13
计算顺序:
1.x +1 2. 判断 x+1>=y 然后执行 3.y-- 4.--y 5.y==1 6 z = x--;来自:求助得到的回答
第1个回答  2013-01-13
这里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

追问

在++x>=y-- 后y的值为2,后面的--y为1?谢了

追答

这个是基础知识
++y表示,y自增1后再参与其它运算;
而y++ 则是y参与运算后,y的值再自增1

int x=2,y=3,z;z=(++x>=y--)?((--y==1)?x--:--y):y--;
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--这里我要说下,...

int x=2,y=3;则++x>y--?x:y的值为2,求解
明确运算符优先级,自增>比较>三元,对于自增运算符,其放在变量前后位置不一样,计算也不一样,如a = 2,++a>=3,是true,a++>=3,是false(一种是先增加\/减少,再运算,另一种相反)综上,实质上就是:(3>3)?3:2->答案值是:2

C语言计算int x=2y=3,z;z=(x++,y++)求z等于多少
z等于3 z=(x++,y++);(x++,y++)这是一个逗号表达式,逗号表达式取右值,也就是(x++,y++)返回的是y++的值,y=3时,y++先返回3,再进行++处理。所以y++等于3.(x++,y++)这个逗号表达式的值为3

int x=1,y=3,z;执行语句z=x>y?++x:y--;后,z的值为多少?为什么?_百度...
x>y返回的是false,所以z=y--;减号在后面所以先把y的值赋给了z之后才去改变y的值,所以z=3。当然如果z=--y的话,z就等于2了 爪机打字不易,希望对你有帮助,还望采纳

int n,x=2,y=3; n=x<y?x++:--y后y的值为2,为什么?
这里用的是一个判断语句,a=b>c?m:n 它的规范写法应该是这样的 a=((b>c)?b:c ) 表示先比较b和c的大小,如果是b>c,则a=m,否则是a=n;而--y是表示要在运算之前进行自减,x++表示是在进行运算之后进行自加;根据这就可以推出来答案是这样的 ...

若x=2,y=3,z=2,求下列表达式的值 (1)x<y?y:z ( 2) x>y?(++x):(++z...
因此x>y++x:++y的意思是判断x>y的真假,若为真,则返回表达式++x,若为假,则返回++y.2).执行z+= 【执行过程】表达式z+=x>y?++x:++y等价于z=z+(x>y?++x:++y).变量赋值后即为z=3+(1>2?++1:++2),1)由于1>2为假(即表达式结果为0),因此返回表达式++y;2)执行++y.++y是先对y...

求问逗号运算符的用法:int x=2,y=3,z 为什么z=(x++,y++)时z=3 而z=...
z=(x++,y++);运算表达式,Z实际上等于y++的值,但是++在变量后,会先执行这条语句,将y增加1前的值付给Z,所以z=3,然后再执行y+1的操作,你可以试试将语句修正为z=(x++,++y);那么z = 4.

设int x=1,y=3,z; 执行z=x>y?++x:y++后z的值是?
程序先判断x>y是否成立,显然不成立,那么就返回冒号后面表达式(y++)的值,此表达式的值是先引用再++ 所以最后 z应该等于3

...表达式z+=x>y?++x:++y的值是( )intx=1,y=2,z=3;
结果是6 z+=x>y?++x:++y的意思是 z=z+x>y?++x;++y 因为x>y为假,所以x>y?++x;++y这个运算出来是++y,那么式子就成了 z=z+++y 而++运算符是先自增然后才执行下一条语句,那么y就先办成3,然后才会和z相加的 这样就计算出来了z=3+3 ...

设x=2,y=3,z=4 z+=x++&& y++ && ++z 表达式执行后,x、y、z的值分别多...
x = 3 y = 4 z = 6 还是运算符的问题,++优先级最高,先算,x++值为2,x值为3,y++值为3,y值为4,++z值为5,z值为5,然后是逻辑运算符&&,三个值均为非0,所以逻辑值为1,z+=1,所以z值为6

相似回答
大家正在搜