2011-12-28 148 views
9

可能重複:
Why are C character literals ints instead of chars?爲什麼sizeof('a')在C中是4?

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

這裏輸出(見現場演示here

here size is 4 
here size is 1 

我沒有得到爲什麼sizeof('a')是4?

+0

參見[爲什麼是C字符文字整數,而不是字符?(http://stackoverflow.com/questions/433895/why-are-c-字符文字,整數,INSTEAD-OF-字符) – 2011-12-28 10:46:44

回答

10

因爲在C字符常量中,比如'a'的類型爲int

有一個C FAQ這個主體探析:

也許令人驚訝,在C 字符常量是int類型,所以 的sizeof( 'A')中的sizeof(int)的(雖然這是另一個領域其中C++ 不同)。

3

默認情況下'a'是一個整數,因此你在你的機器上得到int的大小4個字節。

char是1個字節,因此你得到1個字節。

10

以下是着名的C這本書 - The C programming LanguageKernighan & Ritchie相對於單引號之間寫的字符。

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

所以sizeof('a')相當於sizeof(int)

相關問題