我有以下代碼:存儲器分配
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」。
實際上帶來了什麼區別?
感謝幫助
我有以下代碼:存儲器分配
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」。
實際上帶來了什麼區別?
感謝幫助
因爲在C單個字符常量(例如,'a'
或'0'
)是int
不char
類型。這在C++中是不同的,它們的類型爲char
。
+1特別提到這與C++有所不同。我總是懷疑這種微妙的差異,現在我已經有了一個。 – 2013-03-03 21:35:59
@ H2CO3可能是,他們故意引入這樣的微妙之處,以便在人們說「C/C++」時反駁;) – 2013-03-03 21:42:31
@KingsIndian正確! – 2013-03-03 21:43:47
http://c-faq.com/malloc/sizeofchar.html – cnicutar 2013-03-03 21:32:53
這不是你的實際代碼,是嗎。這甚至不應該編譯。給我們真實的代碼。 – 2013-03-03 21:33:00