以下是小程序:
#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个字节?
答案 0 :(得分:12)
sizeof(max)
被预处理器替换为sizeof('A')
。 sizeof('A')
与sizeof(int)
相同,后者在您的平台上为4。
为避免疑义,'A'
是C中的int
常量,不 a char
。 (请注意,在C ++中'A'
是char
文字,标准将sizeof(char)
固定为1.)