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

解决方案 »

  1.   

    运算符(优先级从高到低) 结合性 
      ++(后缀) --(后缀) ( )(调用函数) [] {} (组合文字) . -> 从左到右 
      ++(前缀) --(前缀) -+~! sizeof * (取值) &(地址) (type) (都是一元运算) 从右到左 
      (type name) 从右到左 
      * / % 从左到右 
      + -(二者都是二元运算) 从左到右 
      << >> 从左到右 
      < > <= >= 从左到右 
      == != 从左到右 
      & 从左到右 
      ^ 从左到右 
      | 从左到右 
      && 从左到右 
      || 从左到右 
      ?:(条件表达式) 从右到左 
      = *= /= %= += -= <<= >>= &= |= ^= 从右到左 
      ,(逗号运算符) 从左到右 
      

  2.   

    这是运算优先级的问题 ,运算的优先级不同
    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
      

  3.   

    那应该是return (1 + (100 > 200 ? 100 : 200));