2011-12-28 40 views
9

thể trùng lặp:
Why are C character literals ints instead of chars?tại sao sizeof ('a') là 4 trong C?

#include<stdio.h> 
int main(void) 
{ 
    char b = 'c'; 
    printf("here size is %zu\n",sizeof('a')); 
    printf("here size is %zu",sizeof(b)); 
} 

đây đầu ra được (Xem demo sống here.)

here size is 4 
here size is 1 

tôi không nhận được lý do tại sao sizeof('a') là 4?

+0

Xem [Tại sao C ints nhân vật literals thay vì ký tự?] (Http://stackoverflow.com/questions/433895/why-are-c- character-literals-ints-thay-of-chars) –

Trả lời

10

Vì trong các hằng số ký tự C, chẳng hạn như 'a' có loại int.

Có một C FAQ về suject này:

Có lẽ đáng ngạc nhiên, hằng kí tự trong C là kiểu int, vì vậy sizeof ('a') là sizeof (int) (mặc dù đây là một khu vực khác trong đó C++ khác nhau).

3

'a' theo mặc định là số nguyên và do đó bạn nhận được kích thước int trong máy của bạn 4 byte.

char là 1 byte và do đó bạn nhận được 1 byte.

10

Sau đây là dòng nổi tiếng từ cuốn sách C nổi tiếng - The C programming Language bởi Kernighan & Ritchie đối với một ký tự được viết giữa dấu nháy đơn.

A character written between single quotes represents an integer value equal to the numerical value of the character in the machine's character set.

Vì vậy sizeof('a') tương đương với sizeof(int)

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