2013-03-03 48 views
-2

我有以下代碼:存儲器分配

int main() { 
    char x='a'; 
    printf("integer = %ld\ncharacter = %ld\nx = %ld\n", sizeof(int),sizeof('a'),sizeof(x); 
    return 0; 
} 

並且輸出是:

整數= 4
字符= 4
X = 1

我的問題是,在爲什麼大小的字符變量x不等於的尺寸「a」

實際上帶來了什麼區別?

感謝幫助

+0

http://c-faq.com/malloc/sizeofchar.html – cnicutar 2013-03-03 21:32:53

+4

這不是你的實際代碼,是嗎。這甚至不應該編譯。給我們真實的代碼。 – 2013-03-03 21:33:00

回答

3

因爲在C單個字符常量(例如,'a''0')是intchar類型。這在C++中是不同的,它們的類型爲char

+1

+1特別提到這與C++有所不同。我總是懷疑這種微妙的差異,現在我已經有了一個。 – 2013-03-03 21:35:59

+1

@ H2CO3可能是,他們故意引入這樣的微妙之處,以便在人們說「C/C++」時反駁;) – 2013-03-03 21:42:31

+0

@KingsIndian正確! – 2013-03-03 21:43:47