2013-03-03 70 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