遇到个简单的return返回值问题?真心懵了
public class Test{
public static void main(String[] args){
System.out.println(go());
}
public static int go(){
return (100 > 200 ? 100 : 200 + 10);
}
}
输出:210
public class Test{
public static void main(String[] args){
System.out.println(go());
}
public static int go(){
return (1 + 100 > 200 ? 100 : 200);
}
}
输出:200
public class Test{
public static void main(String[] args){
System.out.println(go());
}
public static int go(){
return (1 + 100 > 200 ? 100 : 200 + 10);
}
}
输出210
------解决方案--------------------这是运算符优先级的问题吧
------解决方案--------------------运算符(优先级从高到低) 结合性
++(后缀) --(后缀) ( )(调用函数) [] {} (组合文字) . -> 从左到右
++(前缀) --(前缀) -+~! sizeof * (取值) &(地址) (type) (都是一元运算) 从右到左
(type name) 从右到左
* / % 从左到右
+ -(二者都是二元运算) 从左到右
<< >> 从左到右
< > <= >= 从左到右
== != 从左到右
& 从左到右
^ 从左到右
| 从左到右
&& 从左到右
|| 从左到右
?:(条件表达式) 从右到左
= *= /= %= += -= <<= >>= &= |= ^= 从右到左
,(逗号运算符) 从左到右
------解决方案-------------------- 三目运算符 优先级别最低
------解决方案--------------------操作符的优先级问题,+号优先比较运算符
------解决方案--------------------这是运算优先级的问题 ,运算的优先级不同
return (100 > 200 ? 100 : 200 + 10); 首先完成 200+10 实际是 100>200?100:210
return (1 + 100 > 200 ? 100 : 200); 首先完成 1+200 实际是 101>200?100:200
return (1 + 100 > 200 ? 100 : 200 + 10); 首先完成 1+100和200+10 实际是 101>200?100:210
三目运算符 运算的结果就是 210 200 210