int x=1,y=2,z=3;则表达式z+=x>y?++x:++y的值是?

作者&投稿:福伦 (若有异议请与网页底部的电邮联系)
C语言:已有定义int x=3,y=4,z=5;则表达式 !(x+y)+z-1&&y+z/2的值是?~

答案是1。
涉及到的运算符: ! () + - && /
运算符优先级为:() ! / + - &&
运算过程:
x=3,y=4,z=5
!(x+y)+z-1&&y+z/2
!(3+4)+5-1&&4+5/2
所以表达式计算步骤为
!(3+4)+5-1&&4+5/2 -> !7+5-1&&4+5/2
!7为 0
-> 0+5-1&&4+5/2
5/2 整数除整数得整数 2
-> 0+5-1&&4+2
-> 4&&6
逻辑运算 &&

扩展资料
C语言运算符的优先级:

如果同一优先级的运算符,结合次序由结合方向所决定。
参考资料来源:百度百科-运算符优先级

int x=1,y=3,z;则表达式z=x>y?x-y:x+y的值为4

【分析】
z+=x>y?++x:++y
该表达式执行分为两个过程:
1). x>y?++x:++y
这个表达式的运算符为 A?b:c,即根据逻辑表达式A的真假情况返回表达式b或c.
若A为真(即A运算结果非0),则返回表达式c;若为0,则返回表达式c.
因此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变量执行自加,在返回自加后结果,即为3(即为(x>y?++x:++y)的结果).
3)执行z+=.将(x>y?++x:++y)结果带入,为z+=3
4)返回z为6 .
——————————————————————————————————
楼主,这些都是c的基本运算,要扎实c功底啊

首先要明白 ? : 运算符的意思

A?B:C,是这么执行的:判断A是真是假,如果A是真,则执行并返回B,如果A是假,则执行并返回C。

int x=1,y=2,z=3;
z+=x>y?++x:++y;  //判断x>y是否成立,显然不成立,返回++y,即3,执行z+=3,就是z=z+3,z值

所以,最后值6。

其中x值1,y值2,z值6。

望采纳~~~



结果是6
因为+=运算符的优先级低于后面的运算,
所以先求后面表达式的值,可得结果为3
接着,z+=3可得
z=6

值是6
程序先判断想x,y值大小,之后取y值并自加,赋值给z自加

z=6;
表达式值也是6


椒江区13183265491: 已知int x=1,y=2,z=3;以下语句执行后x,y,z的值是 -
望昌六氟: 选b 逻辑运算符的运算特点是左值确定求右值.逻辑运算符不按照规定的优先级计算,在逻辑表达式的求值过程中,如果从"&&"或"||"左边的运算对象部分能够确定整个逻辑表达式的值,则不再求右边运算对象的值.具体地说:若有a&&b且a的值为0,则无须对b进行运算;若有a||b且a 的值为1,则无须对b进行运算.表达式按优先级可分为二部分:第一部分:--x&&--y 第二部分:第一部分值||--z;--x 为前置运算,先将x值减1后,再参与运算,则结果为0;根据优化,第一部分后面的--y就不运算了,值仍然为1.第一部分的值为0.再计算第二部分.0 ||--z; z 的值还要减1,变为0.最终逻辑表达式的值为0.

椒江区13183265491: int x=1,y=2,z=3;求z+=x>y?++x:++y -
望昌六氟:[答案] 答案是6.z+=x>y? ++x:++y可以写成z=z+x>y? ++x:++y,由于三目运算符是右结合,可以得到x=2,y=3,进而x>y不成立,那么x>y? ++x:++y的值为3,最终得到z=z+x>y? ++x:++y=3+3=6

椒江区13183265491: 假设有条件int x=1,y=2,z=3;则表达式z=x<y?x:y的值是多少, -
望昌六氟: 答案是1,?:是三目运算符,意思是如果X小于Y,取X的值,反之取Y值

椒江区13183265491: int x=1,y=2,z=3; x+=y+=z; 的表达式结果是什么?怎么分步计算?(z>=y==z)?1: -
望昌六氟:[答案] 第一个问题 结果为6 x+=y+=z;可以理解为两个表达式,另外+=是从右向左结合,所以先算最右边的 首先,是表达式y+=z,计算后y=5,z=3,表达式y+=z的值为5 最后,是表达式x+=(y+=z);因为y+=z;这个表达式已经为5了,所以x+=y+=z;可以等价...

椒江区13183265491: 设int x=1,y=2,z=3,w=4,则表达式:x<y?x:z<w?x:w的结果为怎么会是3啊 -
望昌六氟: 这道C语言提目应该如此看(x<y)? (x): [(z<w) ? (x) : (w)],注意不要写成[(x<y)? (x): [(z<w)] ? (x) : (w),因为该语句的结合方式是从右至左的.该题主要考的是形如a;b;c的语句.该语句的运算法则是:先算a语句,(1)、若a语句为真(即为1)...

椒江区13183265491: C语言中 int x=1,y=2,z=3;则z+=x>y?++x:++y 的值为多少?为什么? 求大神指教 -
望昌六氟: 答案应该是6.因为先进行x>y?这个判断,而x>y为假,所以z+=++y,++y的值是3,所以z+=3,本来z=3,所以z的值为6

椒江区13183265491: int x=1,y=2,z=3 则Z+=X>y?++x;++y的值是多少 -
望昌六氟: 首先要明白 ? : 运算符的意思 A?B:C,是这么执行的:判断A是真是假,如果A是真,则执行并返回B,如果A是假,则执行并返回C.int x=1,y=2,z=3; z+=x>y?++x:++y; //判断x>y是否成立,显然不成立,返回++y,即3,执行z+=3,就是z=z+3,z值所以,最后值6.其中x值1,y值2,z值6.望采纳~~~

椒江区13183265491: 已知int x=1, y=2, z=3;,则逻辑表达式x<y||++z运算后,z的值是? -
望昌六氟: ||是逻辑或,就是A||B,A和B里面有一个是真的就是真的 C里只要不是0就是真,0就是假 这题x<y,真已经是真了,就不走后面的了真||真(假)都是真 ;所以x<y||++z是1,z还是3哈

椒江区13183265491: 已知有声明:int x=1,y=2,z=3;以下表达式中,表达式的值为0的是(). ①x/y ②!!x ③x==2 ④x=2 ⑤y--,y- - ⑥z>y>x选项: a、①③⑥ b、②④⑤ c、①③⑤ d... -
望昌六氟:[答案] 答案:a

椒江区13183265491: JAVA问题:int x =1,y=2,z =3;则语句 y+=z__/++x的值是: -
望昌六氟: x=2,y=3,z=2 月亮望见了小鱼的结果正确,过程分析不对.woniu157的结果就错了.都是因为++和--这两个运算符.递增和递减运算符出现在变量的前面和后面时优先级是不一样的.出现在变量前时,优先级最高要先算递增、递减的值,再参与其他运算符号的操作.出现在变量后时,优先级降低,先参与其他运算符号的运算,再算递增、递减.y+=z--/++x;这里要注意的就是这两个递增和递减运算.++x要先算,所以x就已经先等于2了.然后是z--/2,刚才说了--在z 后面,所以先算/,就是3/2,结果等于1,之后z才--,z等于2.最后y+=1;y的值为3.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网