2015-06-15 3 views
-2

может любой, пожалуйста, объясните мне, почему следующие печатает код falseПочему следующий код печатает false?

public class Test { 
public static void main(String[] args) { 

    System.out.println(true?false:true == true?false:true); 
} 
} 
+2

это действительно «истина» (ложь) :(true == true? False: true) 'Я думаю, что вы хотели' (true? False: true) == (true? False: true) ' – Titus

+0

что вы пытаясь разобраться в этом вопросе? – Blip

ответ

2

true?false:true == true?false:true оценивается слева направо, поэтому он эквивалентен true?false:(true == true?false:true). Поскольку true - true, первое тернарное выражение возвращает false, что является печатным выходом.

3

Поскольку первое условие true, он будет печатать false.

редактировать:

То есть с трехзначным оператором, в основном это упрощается, если.

 if (true) { 
      System.out.println(false); 
     } else { 
      if (true == true) { 
       System.out.println(false); 
      } else { 
       System.out.println(false); 
      } 
      System.out.println(true); 
     } 

с помощью тройной оператор, это может быть упрощена, как

System.out.println(true?false:true == true?false:true); 

поэтому пост выше использует ту же самую операцию, используя истинным или ложным.

+0

прочитать редактирование моего ответа: – Nagarz

+0

да я просто видел, что я испортил, дай мне секунду, я изменю его, чтобы использовать пример из вопроса – Nagarz

Смежные вопросы