我看了这个问题:在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;
}
我使用gcc和g++编译它们,以下是我的输出结果:
gcc:
sizeof(ch) : 1
sizeof('a') : 4
sizeof("a") : 2
sizeof(char) : 1
sizeof(int) : 4
g++:
sizeof(ch) : 1
sizeof('a') : 1
sizeof("a") : 2
sizeof(char) : 1
sizeof(int) : 4
sizeof("a") : 2
感到惊讶 - 这么多年来,我一直认为它与sizeof(char*)
相同 - 如果我知道它不同,我可能会使用它。 - user180247