Dòng lệnh nào sau đây sẽ không thể biên dịch:
byte b = 5;
char c = ''5'';
short s = 55;
int i = 555;
float f = 555.5f;
b = s;
i = c;
if (f>b)
f = i;
byte b = 5;
char c = ''5'';
short s = 55;
int i = 555;
float f = 555.5f;
b = s;
i = c;
if (f>b)
f = i;
char c = ''5'';
short s = 55;
int i = 555;
float f = 555.5f;
b = s;
i = c;
if (f>b)
f = i;
Trả lời:
Đáp án đúng: D
Dòng lệnh `b = s;` sẽ không thể biên dịch được vì kiểu dữ liệu `short` (s) có kích thước lớn hơn kiểu dữ liệu `byte` (b). Trong Java, khi bạn cố gắng gán một giá trị từ một kiểu dữ liệu lớn hơn vào một kiểu dữ liệu nhỏ hơn mà không có ép kiểu tường minh, trình biên dịch sẽ báo lỗi vì có thể gây mất mát dữ liệu. Các dòng lệnh khác đều hợp lệ vì:
- `i = c;`: `char` có thể gán cho `int` vì `int` lớn hơn.
- `if (f>b)`: So sánh `float` và `byte` là hợp lệ, `byte` sẽ được tự động mở rộng thành `float`.
- `f = i;`: `int` có thể gán cho `float` vì `float` lớn hơn.





