2015-12-23 16 views
5
char c = 'A'; 
printf("%d\n",sizeof(c));// output = 1 
printf("%d\n",sizeof('A')); // output = 4 

Tại sao toán tử sizeof cho đầu ra khác nhau cho cùng một ký tự? Vui lòng Trợ giúpHiểu toán tử sizeof trong C

+0

Vì 'A' không có loại. Nó được hiểu là một 'int'. –

+2

@DavidHoelzer nó có loại và loại là 'int' –

+0

Đủ công bằng. Vì 'A' không được truyền theo bất kỳ cách nào, nó là một 'int' theo định nghĩa. Tôi đã tập trung nhiều hơn vào thực tế rằng có một sự khác biệt trong cách họ đã được xác định. Cảm ơn! –

Trả lời

6

c là biến loại char; kích thước của nó là 1 byte.

'A' là một chữ số int - đừng hỏi tôi tại sao tiêu chuẩn lại nói vậy. Kích thước của nó là 4 byte trên nền tảng của bạn (giống như sizeof(1)).

+0

Quay trở lại những ngày rất cũ, mọi người sử dụng các ký tự nhiều byte, như 'xy'. Mã PDP11 UNIX có rất nhiều thứ đó. Nó hầu như biến mất khi họ chuyển C sang máy tính lớn. C++ cố định hằng số ký tự ... là ký tự. Đây là một trong vài cách trong đó C không phải là một tập hợp con của C++. –