What will be the output of the following C code?

4 phương ánCó giải thích
Đề bài
#include <stdio.h>
void main()
{
    int i = 10, j = 3, k = 3;
    printf("%d %d ", i, j, k);
}

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 3". Hàm printf nhận số đối số thay đổi nên nó không kiểm tra số lượng lúc dịch; chính chuỗi định dạng quyết định lấy ra bao nhiêu giá trị. Ở đây chuỗi chỉ có hai đặc tả nên printf lấy i và j, in 10 rồi 3 kèm khoảng trắng, còn k vẫn được tính nhưng bị bỏ qua hoàn toàn. Chuẩn C cho phép truyền thừa đối số; chỉ truyền thiếu mới là hành vi không xác định. Lựa chọn "Compile time error" sai vì thừa đối số nhiều lắm chỉ bị cảnh báo, và dạng main trả về void dù phi chuẩn vẫn được nhiều trình dịch nhận. Lựa chọn "10 3 3" đòi chuỗi định dạng phải có ba đặc tả. Lựa chọn "10 3 somegarbage value" hiểu sai cơ chế: đối số thừa không bị in ra dưới dạng rác, nó chỉ nằm lại trong vùng tham số và không ai đọc tới.

Cùng phần 6

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