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

标签 c sizeof

据我所知,字符常量,即“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

最佳答案

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

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

关于c - 为什么 sizeof() 运算符在 C 中为 'a' 和 "a"给出不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52667106/

相关文章:

c - C中Server和Client之间用Ring Buffer(循环缓冲区)进行数据交换

c++ - 为什么 C 字 rune 字是整数而不是字符?

c++ - C++ 中的 sizeof 字符串数组

c++ - 函数参数中的 struct 关键字和常量正确性

Controller 和 worker - 启动/停止信号

c - int *p 应该改为 long int *p 吗?

c - 程序输出说明

c++ - C/C++ 中的 sizeof char* 数组

c - 类型的大小和内存分配

terminal - 如何使终端程序对鼠标点击使用react