我有以下代码:存储器分配
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