Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有char类型的变量的内存分配_C_Gcc - Fatal编程技术网

具有char类型的变量的内存分配

具有char类型的变量的内存分配,c,gcc,C,Gcc,我有以下代码: 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而不是

我有以下代码:

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 < /> >。< /p>这不是你的实际代码,是吗?这甚至不应该编译。给我们真正的代码。+ 1,特别是提到这与C++的区别。我总是想知道这些细微的差别,现在我有了。@H2CO3可能是,他们故意引入了这些细微差别,以便在人们说“C/C++”时予以反驳;)@KingsIndian是正确的!