How are ternary expressions evaluated in Java?

I followed the tutorial here and on the line:

boolean t1 = false?false:true?false:true?false:true;

the final value of t1 is false. but I rated it as truth. first false gives true, and true returns false, which subsequently gives true am I right? No, I'm wrong. please tell me how ternary expression is evaluated in java?

+4
source share
3 answers

When the compiler finds a character ?, it searches for the appropriate one :. The expression before ?is the first operand of the ternary conditional operator that represents the condition.

? : , , .

: , , .

boolean t1 = false   ? false    :    true?false:true?false:true;

             first     second        third
             operand   operand       operand

, true?false:true?false:true, :

true    ?   false    : true?false:true;

first       second     third
operand     operand    operand

, - false.

BTW, true?false:true false, x?false:true?false:true false x.

+5

.

boolean t1 = (false ? false : (true ? false : (true ? false : true)));
                  |                      |               | 
                  |                      |               1
                  |                      2
                  3

, ,

  • 1 false.
  • 2 : true? false : false, false.
  • Exp 3 false ? false : false, false.

, , , :

  • Exp 3 - false ? (don't care) : (...) → , Exp 2 Exp 1, .
  • Exp 2 - true: false, (don't care) Exp 2, Exp 1 .
  • Exp 3 false ? (don't care) : false, false.
+4

, :

boolean t1 = false?false:true?false:true?false:true              
           = true && (true ? false : true ? false : true)
           = true && false
           = false

:

boolean t1 = false?false:true?false:true?false:true;

:

boolean t1 = !false && (true ? false : true ? false : true); 

:

boolean t1 = true && (true ? false : true ? false : true); 

:

boolean t1 = true && false;

false;

+1

Source: https://habr.com/ru/post/1679555/


All Articles