Chọn dòng phát sinh lỗi khi biên dịch
byte b = 2;
byte b1 = 3;
b = b * b1;
byte b = 2;
byte b1 = 3;
b = b * b1;
byte b1 = 3;
b = b * b1;
Trả lời:
Đáp án đúng: C
Trong Java, khi thực hiện phép toán trên các kiểu dữ liệu nhỏ hơn `int` (như `byte`, `short`), kết quả sẽ được tự động nâng kiểu lên `int`. Do đó, biểu thức `b * b1` sẽ trả về một giá trị kiểu `int`. Để gán giá trị `int` này cho biến `b` kiểu `byte`, cần phải ép kiểu tường minh (explicit casting). Nếu không ép kiểu, trình biên dịch sẽ báo lỗi vì có thể gây mất dữ liệu. Dòng `b = b * b1;` sẽ gây ra lỗi biên dịch vì không có ép kiểu tường minh từ `int` về `byte`.