2012-03-03 76 views
6

thể trùng lặp:
Why are C character literals ints instead of chars?kích thước của kiểu char trong C

folks,

Tôi cố gắng để in ra kích thước của char trong C. Với đoạn mã sau, Tôi có kết quả đầu ra là

int, 4 
char, 1 
char?, 4 

Tại sao người cuối cùng không giống như người thứ hai? Cảm ơn.

#include <stdio.h> 

main() 
{ 
    int a = 2; 
    char b = '2'; 
    printf("int, %d\n",sizeof(a)); 
    printf("char, %d\n",sizeof(b)); 
    printf("char?, %d\n",sizeof('a')); 
} 
+0

http://stackoverflow.com/questions/433895/why-are-c-character-literals-ints-instead -những ký tự. Trong ánh sáng này, tôi sẽ bỏ phiếu để đóng (mặc dù nó không phải là một câu hỏi xấu) –

+0

Thảo luận về chủ đề này đã được nêu ra trước: http://stackoverflow.com/questions/433895/why-are-c-character-literals -ints-instead-of-chars –

+1

Lưu ý rằng 'sizeof (char)' là 1, theo định nghĩa --- 'sizeof()' trả về giá trị trong đơn vị char. Mà không giống như byte! AFAICT không có cách nào để có được kích thước của một cấu trúc trong _bytes_ mà không có kiến ​​thức nền tảng (nghĩa là, có bao nhiêu byte trong một char). –

Trả lời

24

Trong C, hằng số ký tự như 'a' có loại int.

Điều này khác với C++ và Java, nơi một hằng số nhân vật như 'a' đã gõ char,

Các vấn đề liên quan