What is the output of the following code if the user enters the value "20"?

4 phương ánCó giải thích
Đề bài
int n;
char c;
scanf("%d", &n);
c = getchar();
printf("%d",c);

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "10". Khi người dùng gõ 20 rồi nhấn phím xuống dòng, vùng đệm của luồng vào chuẩn chứa hai chữ số và một ký tự xuống dòng. Đặc tả %d đọc hai chữ số rồi dừng ngay khi gặp ký tự không phải chữ số, và bỏ lại ký tự xuống dòng trong đệm. Lệnh getchar kế đó lấy đúng ký tự còn lại ấy, tức ký tự xuống dòng, mã ASCII bằng 10; in nó bằng %d nên màn hình hiện 10. Số "20" là giá trị của n, nhưng printf in biến c chứ không in n, và c chỉ giữ được một ký tự. Số "0" ứng với byte rỗng, thứ không có trong dòng người dùng gõ. Kết luận "Undefined" sai vì luồng vào chuẩn có vùng đệm nên ký tự xuống dòng còn nguyên ở đó, kết quả hoàn toàn đoán được; đây cũng là lý do phải dọn đệm trước khi đọc ký tự.

Cùng phần 6

Xuất hiện trong 1 bộ đề