为什么sizeof()运算符为C中的“ a”和“ a”赋予不同的值?

时间:2018-10-05 13:48:37

标签: c sizeof

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

我的代码:

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

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

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

   printf("%d",y);
}

给出输出:

4
2

1 个答案:

答案 0 :(得分:4)

'a'是一个整数。在大多数计算机上,它的大小为4。但是,这也可能是其他事情。 2在更专业的硬件上也很常见。

"a"是字符串文字。有两个字符:a\0。它们的大小均为1,总大小为2。但是,当您尝试分配大小时,通常会得到const char*,并且大小可能会有所不同。

相关问题