A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Gaara 高级黑马   /  2013-3-9 11:09  /  2619 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天无意间看到别人写的这么一句,我就晕了...
return selforder <= order ? selforder != order ? -1 : 0 : 1;


返回的是个int类型
我知道三目可以连着写,是从右往左运算的,但这个...咋看都不像三目.
呵呵.

8 个回复

倒序浏览
我觉得是这样的:
int x = return selforder <= order ? -1 : 0 ;
return  selforder != order ? x : 1;
回复 使用道具 举报
上面错了,int x = selforder <= order ? -1 : 0 ;
回复 使用道具 举报
汗 这个刚研究过...
1  ?: 条件运算符,右结合性
2  一元运算符左结合性的有[].()(method call) .
   一元运算符右结合性 ! ~ ++ -- +(单目) -(单目) new  
3 再看楼主这个   selforder <= order ? selforder != order ? -1 : 0 : 1;
         加上括号后是(selforder <= order) ? ((selforder != order)? -1 : 0 ): 1;
         1)为什么这么加括号,我们根据关系运算符大于条件运算符,2)条件运算是右结合的
         3)注意虽然是右结合的但是 算起来却是从左往右算的.所以就容易理解了.
         相当于 if(selforder<=order){
                 if(selforder!=order)
                      return -1;
                 else retern 0;
                 }
               else
                   return 1;

4 既然是右结合性,为什么从左往右算?
         1)您从右往左能算得了吗?
         2)条件运算符本身就是像a>b?1:0 一样从左往右算的

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
朱玺 发表于 2013-3-9 11:17
汗 这个刚研究过...
1  ?: 条件运算符,右结合性
2  一元运算符左结合性的有[].()(method call) .

很全面  3q
回复 使用道具 举报
这样写代码的人,完全是找骂的,也教坏了初学者,根本没必要去研究这样的代码,也完全不要写这种代码,学习的时候知道有这回事就可以了。写的时候把括号加上去,方便自己,也方便他人,而且不容易错。这样写不显示你牛,只显示你很肤浅。不仅容易错,而且养成了坏的思维习惯,如果你以后学习别的语言,或在别的平台,如果不是右结合性(不同的平台或不同的编译器的规则总有点差别),那你就惨了。一出问题,你就准备骂娘吧,因为你认为就是这样,你永远不会去怀疑真正出问题的代码。永远不要想着你后面可以调试,能找出问题,养成编码的好习惯才是王道,前面做好了,调试的时候就舒服很多了。
回复 使用道具 举报
何红卫 发表于 2013-3-9 11:42
这样写代码的人,完全是找骂的,也教坏了初学者,根本没必要去研究这样的代码,也完全不要写这种代码,学习 ...

:L:L  这不是我写的   只是看到了 就发上来了  就当长个见识呗  也算是提醒大家别这么写就好了

知道有这么回事就好了

评分

参与人数 1黑马币 +30 收起 理由
洪建超 + 30 嘘。。。。试验一下

查看全部评分

回复 使用道具 举报
这时 三元运算符 嵌套吧  能用吗  我试试去
回复 使用道具 举报
可以啊
  1. class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int a=5;
  6.                 int b=6;
  7.                 int c=7;
  8.                 System.out.println(a<b? b<c? b:c:a);
  9.         }

  10. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马