我在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 ++编译它们,这些是我的输出:
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 = …
为什么char变量从'ab'赋值'b'而不是'a'?
char c = 'ab';
printf("c: %c\n", c);
打印:
c: b
当写“9”而不是 9 作为我的字符时,由于某种原因,我的最终结果变得消极且错误。这是为什么?“9”有什么作用?
#include <stdio.h>
int main() {
    int a, b;
    char c = '9';
    a = 44;
    b = a - c;
    printf("%d \n", b);
    return 0;
}