C / C ++中的单引号,双引号和sizeof('a')
我在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
克++:
sizeof(ch) : 1 sizeof('a') : 1 sizeof("a") : 2 sizeof(char) : 1 sizeof(int) : 4
g ++的输出对我来说是有意义的,我对此毫不怀疑。 在gcc中,需要sizeof('a')
与sizeof(char)
不同的是什么? 这背后有一些实际的原因还是只是历史?
同样在C中,如果char
和'a'
有不同的大小,这是否意味着当我们写出char ch = 'a';
,我们在做隐式types转换?
在C中,字符常量(如'a'
types是int
,在C ++中是char
。
关于最后一个问题,是的,
char ch = 'a';
导致int
到char
的隐式转换。
因为没有字符只是intgers链接int一个字符
像一个是62我猜
如果你尝试printf(“%c”,62); 你会看到一个angular色