为什么 sizeof() 运算符在 C 中为 'a' 和 "a" 给出不同的值?

Why sizeof() operator gives different value for 'a' and "a" in C?

据我所知,字符常量 'a' 以 ASCII 格式存储,在内部被视为整数,在 'a' 的情况下为 97,这就是为什么 sizeof('a') returns 4 执行但当我使用 sizeof("a") 时 returns 2. 我还没有找到任何解释。

我的代码:

#include <stdio.h>
void main()
{
   int x,y;

   x = sizeof('a');
   y = sizeof("a");

   printf("%d\n",x);

   printf("%d",y);
}

给出输出:

4
2

'a' 是一个整数。在大多数计算机上它的大小为 4。然而,它也可能是别的东西。 2 在更专业的硬件上也很常见。

"a" 是字符串文字。有两个字符:a[=13=]。它们每个的尺寸为 1,总尺寸为 2。但是,当您尝试分配它时,通常得到的是 const char*,并且尺寸可能不同。