为什么 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*
,并且尺寸可能不同。
据我所知,字符常量 '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*
,并且尺寸可能不同。