Poll: Kiểm tra kiến thức C - 1.10

Các bạn thảo luận đáp án nhé, bài test lấy từ http://www.indiabix.com/online-test/c-programming-test/112

10.If char=1, int=4, and float=4 bytes size, What will be the output of the program ?

#include<stdio.h>

int main()
{
    char ch = 'A';
    printf("%d, %d, %d", sizeof(ch), sizeof('A'), sizeof(3.14f));
    return 0;
}
  • A. 1, 2, 4
  • B. 1, 4, 4
  • C. 2, 2, 4
  • D. 2, 4, 8
3 Likes

Câu này dễ òm hehe

Sẵn quảng cáo

2 Likes

1,4,4 sai à nha. 1,1,4 hehehe

1 Like

Cái này C nó không coi là char đâu, nó chỉ coi đó là một con số thôi. Sau đó nó tự động ép kiểu về kiểu int => 4 bytes

Sao thế nhỉ. Em dùng devC và nó không hề ép kiểu về int. Nó trả về giá trị 1b kiểu char luôn :-s. Hay trình biên dịch này nó vậy nhỉ :-w

1 Like

Em thử với http://ideone.com/ xem sao? Đáng lẽ ra phải ép kiểu về int. Có thể compiler của DevC không chuẩn :smiley:

1 Like

1-4-4 thật. Trường em dùng cái này để dạy C vs C++ mà. Tại sao nó lại nghĩ là kiểu int nhỉ. Hay nó tính theo bảng mã asii. Ký tự A = 65 tương đương với 4 bytes?

‘A’ = 65, 65 là một con số thôi. Trình biên dịch không biết nó là kiểu gì, char thì ít quá. Thôi thì mặc định là int.

Lại còn có cả thôi thì mặc định nữa hả a ~.~. Em lại nghĩ 65 nó là số kiểu int thì đáp án = 4 =)

1 Like

à, thực ra có một khái niệm về món ép kiểu này. Khi nó là số nguyên, nhỏ hơn MAX_INT thì sẽ được ép kiểu về int, lớn hơn thì nó ép về long hoặc long long.

2 Likes

mình cũng như bạn ra 1,1, 4

1 Like

mình tính ra 1,4,4 . và kq của codeblock cũng là 1,4,4 .

2 Likes

Em dùng Dev-C kết quả bình thường 1 4 4 mà.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?