JavaScript is required

Đầu ra của chương trình sau là bao nhiêu?

class conversion

{

public static void main(String args[])

{

double a = 295.04;

int b = 300;

byte c = (byte) a;

byte d = (byte) b;

System.out.println(c + " " + d);

}

}

Chọn một:

A.

A. 38 43

B.

B. 39 44

C.

C. 295 300

D.

D. 295.04 300

Trả lời:

Đáp án đúng: B


Chương trình thực hiện ép kiểu dữ liệu từ double và int về byte. - Biến `a` có giá trị 295.04 (kiểu double) được ép về byte. Khi ép kiểu double về byte, phần thập phân bị loại bỏ và giá trị nguyên 295 được xét trong phạm vi của byte (-128 đến 127). Vì 295 lớn hơn 127, nó sẽ tràn số. Để tính giá trị sau khi tràn, ta lấy 295 trừ đi 256 (2^8, vì byte là 8 bit), kết quả là 39. Vậy `c` = 39. - Biến `b` có giá trị 300 (kiểu int) được ép về byte. Tương tự, 300 lớn hơn 127 nên cũng bị tràn số. Ta lấy 300 trừ đi 256, kết quả là 44. Vậy `d` = 44. Do đó, đầu ra của chương trình là "39 44".

Câu hỏi liên quan