C语言: int x=5, y=7, z; z=x>y?5>3?++x+y:x:++x-y++ 则z的值为...
发布网友
发布时间:2024-10-24 17:21
我来回答
共5个回答
热心网友
时间:2024-11-06 00:26
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
热心网友
时间:2024-11-06 00:24
难道是-1
z=x>y?(5>3? x y:x): x-y ;
判断x>y为假执行后面
先x自加1也就是6-7
?:三元运算符
热心网友
时间:2024-11-06 00:26
设计到逗号运算符。
先计算x--,x=5了
再计算y++,y=8了
再计算x+y,也就是5+8=13
所以(x--,y++,x+y)的结果为13
热心网友
时间:2024-11-06 00:18
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;
热心网友
时间:2024-11-06 00:25
z=-1;
这个式子嵌套使用了条件选择语句
因为x>y是错的 所以z=++x-y++;了
z=++x-y--等同于 x=x+1;z=x-y;y++;
++x表示先让x自增1在去运算 儿x++的话是先让x拿去运算 在自增1