当前位置:编程学习 > JAVA >>

今天看到一个有意思的运算题,有兴趣来看看。JSE的

int result = selforder <= order ? selforder != order ? -1 : 0 : 1;
System.out.println(result); --------------------编程问答-------------------- 优先级问题,实在搞不清开发时用括号标明优先级就行,这种写法一般都是什么面试题上的,不实用 --------------------编程问答-------------------- 这种题在各大IT的笔试题上经常能够看到,不是什么新鲜东西了。细心点,把顺序理清楚还是没什么难度的 --------------------编程问答-------------------- int result = selforder <= order ? selforder != order ? -1 : 0 : 1;
System.out.println(result);
三目运算符。
会先执行selforder != order ? -1 : 0这句,判断selforder != order是否为true,是就是-1,然后就是selforder <= order ? -1 : 1;了。不是就是0了,然后就是selforder <= order ? 0 : 1;了,下面又类似了。
--------------------编程问答-------------------- 在实际开发中千万不要这么写,不然你的Team会恨你的 --------------------编程问答-------------------- 哪有意思 --------------------编程问答-------------------- 最不喜欢用三目表达式了。看起来代码少,但是用起来很不方便啊。 --------------------编程问答--------------------
引用 3 楼 fangmingshijie 的回复:
int result = selforder <= order ? selforder != order ? -1 : 0 : 1;
System.out.println(result);
三目运算符。
会先执行selforder != order ? -1 : 0这句,判断selforder != order是否为true,是就是-1,然后就是selforder <= order ? -1 : 1;了。不是就是0了,然后就是selforder <= order ? 0 : 1;了,下面又类似了。
--------------------编程问答-------------------- 除 --------------------编程问答-------------------- ? : 可以嵌套的使用 弄清楚优先级就可以了  --------------------编程问答--------------------

int result = selforder <= order ? (selforder != order ? -1 : 0) : 1;
--------------------编程问答--------------------
引用 3 楼 fangmingshijie 的回复:
int result = selforder <= order ? selforder != order ? -1 : 0 : 1;
System.out.println(result);
三目运算符。
会先执行selforder != order ? -1 : 0这句,判断selforder != order是否为true,是就是-1,然后就是selforder <= order ? -1 : 1;了。不是就是0了,然后就是selforder <= order ? 0 : 1;了,下面又类似了。



public static void main(String[] args) {
// TODO Auto-generated method stub
int a=2;
int b=3;
int c= a==b? ++a>=0? 11:10 : 0;

System.out.println(c);

感觉3楼的说法是错的,又不敢肯定,于是编写了个代码测试了一下,猜猜上面的代码执行结果是什么?是0!所以三目运算里面应该是先进行逻辑判断,再去找相应的代码执行,这样子比较合逻辑,代码运行起来效率也比较高,不用执行无用的代码。 --------------------编程问答--------------------

public static void main(String[] args) {
// TODO Auto-generated method stub
int a=2;
int b=3;
int c= a==b? ++a>=0? 11:10 : 0;

System.out.println(c);

感觉3楼的说法是错的,又不敢肯定,于是编写了个代码测试了一下,猜猜上面的代码执行结果是什么?是0!所以三目运算里面应该是先进行逻辑判断,再去找相应的代码执行,这样子比较合逻辑,代码运行起来效率也比较高,不用执行无用的代码。
+1
int c= a==b? ++a>=0? 11:10 : 0;首先判断a==b?如果a!=b的话,不管里面的代码如何结果都为0
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,