Sun*_*pta 8 c macros c-preprocessor
以下是小程序:
#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;
}
Run Code Online (Sandbox Code Playgroud)
该计划的输出是:
max[65] sizeof[max][4]
a[65] sizeof[a][1]
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我理解为什么sizeof(max)是4个字节?
Bat*_*eba 12
sizeof(max)由预处理器替换sizeof('A').在您的平台上sizeof('A')是相同的sizeof(int),后者是4.
为避免疑问,在C中'A'是int 常数,而不是 a char.(注意,在C++中'A'是char 文字,并且sizeof(char)标准固定为1.)
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |