C语言: int x=5, y=7, z; z=x>y?5>3?++x+y:x:++x-y++ 则z的值为________。

跪求详细解释,谢谢!

int x=5,y=7,z;//x=5,y=7,z=?
z=x>y?5>3?++x+y:x:++x-y++;//此句分解为下面语句
if(x>y)//此条件不成立直接else
{
    if(5>3)
    {
      z=++x+y;
    }
    else
    {
        z=x;
    }
}
else//运行此句 
{
    z=++x-y++;
 }

上述问题转化为z=++x-y++;
++x的值为x+1
y++的值为y
则问题转化为z=(x+1)-y=6-7=-1

结果为-1

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-30
z=x>y?5>3?++x+y:x:++x-y++ ;
用if-else 表示为
if(x>y){
if(5>3)z=++x+y;
}else{
z=x;
}
}else{
z=++x-y++;//由条件可知执行这一句,其它全部跳过;
}
++x-y++首先对x进行递增运算 使x==6
然后运算 x-y 结果为-1 再运行 y++使 y==8
然后将结果 -1赋值给 z;
第2个回答  2013-06-30
难道是-1
z=x>y?(5>3? x y:x): x-y ;
判断x>y为假执行后面
先x自加1也就是6-7
?:三元运算符
第3个回答  2013-06-30
z=-1;

这个式子嵌套使用了条件选择语句
因为x>y是错的 所以z=++x-y++;了
z=++x-y--等同于 x=x+1;z=x-y;y++;
++x表示先让x自增1在去运算 儿x++的话是先让x拿去运算 在自增1
第4个回答  2020-01-12
设计到逗号运算符。
先计算x--,x=5了
再计算y++,y=8了
再计算x+y,也就是5+8=13
所以(x--,y++,x+y)的结果为13
相似回答