JavaScript is required

Đầu ra là gì? #include #include void main() { char c = 125; c = c + 10; printf("%d", c); getch(); }

A.

135

B.

B.8

C.

C.-121

D.

121

Trả lời:

Đáp án đúng: C


Trong C, kiểu `char` thường là kiểu số nguyên có dấu với kích thước 1 byte (8 bits). Do đó, phạm vi giá trị của `char` thường là từ -128 đến 127. Trong đoạn code, biến `c` được khởi tạo với giá trị 125. Sau đó, 10 được cộng vào `c`, kết quả là 135. Vì 135 vượt quá phạm vi tối đa (127) của kiểu `char`, xảy ra hiện tượng tràn số (overflow). Để hiểu rõ hơn, ta có thể xem xét cách biểu diễn nhị phân của 125: 01111101 (125 trong hệ nhị phân) Khi cộng thêm 10: 125 + 10 = 135 Tuy nhiên, vì `char` là kiểu số nguyên 8-bit có dấu, giá trị sẽ "quấn" quanh về phía âm khi vượt quá 127. Giá trị lớn nhất là 127 (01111111). Khi cộng thêm 1, nó sẽ trở thành -128 (10000000). Vậy, 135 sẽ được tính như sau: 135 - 256 = -121 Vì vậy, giá trị cuối cùng của `c` sẽ là -121. Do đó, đáp án đúng là C. -121

Câu hỏi liên quan