The condition expression returns the value according to the first one that is in this case 9.9 .If you change it to some other data type then the return will also be according to it.So the return is in the format of the first one
Just try this
Now you can understand i think!!!
Originally posted by Ganesh kumar :
If you change it to some other data type then the return will also be according to it.So the return is in the format of the first one
As Ganesh kumar told and as per the JLS, the "Binary Numeric Promotion" is applied, and thats why you get the floating point value.
The JLS in the above link says,
When an operator applies binary numeric promotion to a pair of operands, each of which must denote a value of a numeric type, the following rules apply, in order, using widening conversion (�5.1.2) to convert operands as necessary:
If either operand is of type double, the other is converted to double. Otherwise, if either operand is of type float, the other is converted to float. Otherwise, if either operand is of type long, the other is converted to long. Otherwise, both operands are converted to type int.
The original link to the topic is here for the Conditional Operators in JLS.
[ July 09, 2007: Message edited by: Raghavan Muthu ]
To simplify what others have listed here, your ternary expression is of the format:
integer expression ? double value : integer value
Since one of the result values is a double, the other will be treated as a double. If your expression was of the format
int i = 5;
if(i > 5) ? 10 : 9;
Then you would see 9 printed out.