58

我在看问题Single quotes vs. double quotes in C or 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++ 编译它们,这些是我的输出:

海湾合作委员会:

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 中 ifchar'a'具有不同的大小,这是否意味着当我们编写 时 char ch = 'a';,我们正在进行隐式类型转换?

4

2 回答 2

61

在 C 中,字符常量如'a'具有 type int,在 C++ 中是char.

关于最后一个问题,是的,

char ch = 'a';

导致 到 的隐式int转换char

于 2012-05-15T18:38:18.013 回答
1

因为没有 char 只是 intgers 链接 int 一个字符

我猜是62

如果你尝试 printf("%c",62); 你会看到一个角色

于 2012-05-22T19:19:55.380 回答