What is printed?

4 phương ánCó giải thích
Đề bài
char sentence[81] = "This is a test";
int n = strlen(sentence);
printf("%d", n);

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: "14". Mảng sentence có tám mươi mốt ô nhưng được khởi tạo từ hằng chuỗi, nên chỉ phần đầu mang nội dung, ô ngay sau chữ cuối giữ byte rỗng kết thúc và các ô còn lại cũng bằng không. Hàm strlen đếm số ký tự tới trước byte kết thúc, kể cả dấu cách: bốn chữ của This, một dấu cách, hai chữ của is, một dấu cách, một chữ a, một dấu cách rồi bốn chữ của test, cộng lại đúng 14. Số "13" là kết quả khi bỏ sót một dấu cách, lỗi đếm thường gặp vì dấu cách không nhìn thấy rõ. Số "15" là số byte chuỗi thật sự chiếm, tức mười bốn ký tự cộng byte kết thúc. Kết luận "Compilation error" sai vì khởi tạo mảng char tám mươi mốt ô bằng một chuỗi ngắn hơn là hợp lệ.

Cùng phần 8

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