黑马程序员技术交流社区

标题: 菜鸟关于三目运算符的困惑,求大神指点 [打印本页]

作者: Michael_xpd    时间: 2013-9-10 23:45
标题: 菜鸟关于三目运算符的困惑,求大神指点
本帖最后由 Michael_xpd 于 2013-9-11 11:44 编辑

今天看数据结构时候看到的
Status Max(Triplet T,ElemType &e){
         //用e返回值指向T的最大元素值
         e=(t[0]>=T[1])?((T[0]>=T[2])?T[0]:T[2])
                                 :((T[1]>=T[2])?T[1]:T[2])
        return Ok;
}//Max
当时看到这么多三目运算符的嵌套使用,我直接晕了……

作者: 辛春鹏    时间: 2013-9-10 23:54
t0>=t1----t0>=t2---t0
                t0<t2---t2
t0<t1-------t1>=t2---t1
               t1<t2------t2

就是这个结构的了
作者: 焦允    时间: 2013-9-11 00:05
这个看上去是复杂,还好是加了括号的,
(t[0]>=T[1])     ?      ((T[0]>=T[2])?T[0]:T[2])      :  ((T[1]>=T[2])?T[1]:T[2])
分别求出冒号前面和后面两个式子的返回结果,假如前面返回T[0],后面返回T[2],那么式子就变成了
(t[0]>=T[1]) ?T[0]:T[2]   这样不就很容易看明白了。
作者: 大眼瞪小眼    时间: 2013-9-11 02:22
//t0  ,t1  ,t2  三个数,提取最大值,可以用if else 语句来理解:
      if (t0 >= t1) //t0比t1大吗?大,就看if大括号里面的代码,否则,看else里面的代码。
        {
               if (t0 >= t2)//t0比t2也大吗?大,最大值即为t0,否则,为t2.
                  {
                          Max = t0;
                  }
                else (t0 < t2)
                  {
                          Max = t2;  
                  }
         }
        else (t0 < t1)
         {
              if (t1 >= t2)
                  {
                          Max = t1;
                  }
                else (t1 < t2)
                  {
                          Max = t2;  
                  }
         }

作者: 陶智第    时间: 2013-9-11 08:00
三元运算符格式:(a>b)?a:b

e=(t[0]>=T[1])?((T[0]>=T[2])?T[0]:T[2]) :((T[1]>=T[2])?T[1]:T[2])
这个东西其实很简单,它可以分为三个部分
第一部分:(t[0]>=T[1])
        这部分相当于:(a>b)
第二部分:((T[0]>=T[2])?T[0]:T[2])
        这部分相当于:a
第三部分:((T[1]>=T[2])?T[1]:T[2])
        这部分相当于:b
作者: 杨增坤    时间: 2013-9-11 08:24
楼主,你好!
如果您的问题解决了,请把您问题的未解决更改为已解决!
谢谢合作!

作者: Yuan先生    时间: 2013-9-11 08:44
分成三段式的:
         e = (t[0] >= T[1]) ?                           ((T[0] >= T[2]) ? T[0] : T[2])
                                 :((T[1] >= T[2]) ? T[1] : T[2])







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2