我在C或C++中查看单引号与双引号的问题.我无法完全理解给出的解释,所以我写了一个程序:
#include <stdio.h>
int main()
{
char ch = 'a';
printf("sizeof(ch) :%d\n", sizeof(ch));
printf("sizeof(\'a\') :%d\n", sizeof('a'));
printf("sizeof(\"a\") :%d\n", sizeof("a"));
printf("sizeof(char) :%d\n", sizeof(char));
printf("sizeof(int) :%d\n", sizeof(int));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我使用gcc和g ++编译它们,这些是我的输出:
sizeof(ch) : 1
sizeof('a') : 4
sizeof("a") : 2
sizeof(char) : 1
sizeof(int) : 4
Run Code Online (Sandbox Code Playgroud)
sizeof(ch) : 1
sizeof('a') : 1
sizeof("a") : 2
sizeof(char) : 1
sizeof(int) : 4
Run Code Online (Sandbox Code Playgroud)
g ++输出对我有意义,我对此没有任何疑问.在gcc中,需要sizeof('a')与之不同的是sizeof(char)什么?背后有一些实际的原因还是只是历史?
同样在C中如果char并且'a'具有不同的大小,这是否意味着当我们编写时
char ch = 'a';,我们正在进行隐式类型转换?
Dan*_*her 61
在C中,字符常量如有'a'类型int,在C++中是char.
关于最后一个问题,是的,
char ch = 'a';
Run Code Online (Sandbox Code Playgroud)
导致隐式转换int为char.