下面是小程序:
#include <stdio.h>
#define max 'A'
int main()
{
char a;
printf("max[%d] sizeof[max][%ld]\n", max, sizeof(max));
a = max;
printf("a[%d] sizeof[a][%ld]\n", a, sizeof(a));
return 0;
}
程序的输出是:
max[65] sizeof[max][4]
a[65] sizeof[a][1]
谁能帮我理解为什么 sizeof(max) 是 4 个字节?
最佳答案
sizeof(max)
被预处理器替换为 sizeof('A')
。 sizeof('A')
与 sizeof(int)
相同,后者在您的平台上为 4。
为避免疑义,'A'
是 C 中的 int
常量,不是 字符
。 (请注意,在 C++ 中,'A'
是一个 char
literal,而 sizeof(char)
固定为 1按照标准。)
关于c - 当 MACRO 不包含任何内存位置时,为什么 sizeof(MACRO) 给出 4 个字节的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50333520/