hi_kidult
2021-07-12 15:22
采纳率: 100%
浏览 20

请写出下题的解题过程

经过以下语句定义,int x=1,y=2,z=3;
表达式 z+=x>y?++x:++y的值为?
结果为 6

还有书上的一句话我也不懂

img

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 八云黧 2021-07-12 15:30
    已采纳

    你划线的那句话意思就是z+=x>y?++x:++y要按(z+=(x>y?++x:++y))的顺序进行运算
    根据++x是先让x加一然后返回值,所以原式可以认为(z+=(x>y?++x:3))->(z+=(x>y?2:3))->(z+=(2>3?2:3))->(z+=3)的计算步骤进行。
    注意:三目运算只会执行为真的表达式,也就是说x++并没有被执行,楼下的回复是有问题的

    点赞 打赏 评论
  • qfl_sdu 2021-07-12 15:30

    int x=1,y=2,z=3;
    z+=x>y?++x:++y等价于 x++,y++ ; int v=z>y?x:y ; z=z+v;这三句话
    x++,y++ 后,x=2,y=3, 3>y不成立,所以z>y?x:y的结果是y(也就是3)
    z=z+v=3+3=6

    点赞 打赏 评论
  • 八云黧 2021-07-12 15:37

    原式应该等价于

    int x=1,y=2,z=3;
    if (x>y) {
      z+=++x;
    } else {
      z+=++y;
    }
    

    很容易看出最外层的判断x>y的运算优先级最高

    点赞 打赏 评论

相关推荐 更多相似问题