Java Programming - Operators and Assignments - Discussion

Discussion :: Operators and Assignments - Pointing out the correct statements (Q.No.2)

2. 

Which of the following are legal lines of code?

  1. int w = (int)888.8;
  2. byte x = (byte)1000L;
  3. long y = (byte)100;
  4. byte z = (byte)100L;

[A]. 1 and 2
[B]. 2 and 3
[C]. 3 and 4
[D]. All statements are correct.

Answer: Option D

Explanation:

Statements (1), (2), (3), and (4) are correct. (1) is correct because when a floating-point number (a double in this case) is cast to an int, it simply loses the digits after the decimal.

(2) and (4) are correct because a long can be cast into a byte. If the long is over 127, it loses its most significant (leftmost) bits.

(3) actually works, even though a cast is not necessary, because a long can store a byte.


Abc said: (Jul 4, 2017)  
If there is a loss of precision their would be compile time error stating loss of precision. Then how its legal?

Post your comments here:

Name *:

Email   : (optional)

» Your comments will be displayed only after manual approval.