#define a b
#define b c
#define c d
main()
{
int a=192;
printf("%d\n",a);
printf("%d\n",b);
printf("%d\n",c);
printf("%d\n",d);
}
输出为192。如何宣布a,b,c?
答案 0 :(得分:3)
当你使用宏时,你告诉预处理器用宏后面的表达式替换标识符(在你的情况下,a,b,c)。
因此,该系列定义告诉预处理器用a替换a的内容,用c替换b的内容,并用d替换c的内容。
所以你得到的是与时间打印相同的值
main()
{
int d = 192;
printf("%d\n", d);
printf("%d\n", d);
printf("%d\n", d);
printf("%d\n", d);
}
答案 1 :(得分:2)
结果代码是
main()
{
int d=192;
printf("%d\n",d);
printf("%d\n",d);
printf("%d\n",d);
printf("%d\n",d);
}
当然会四次打印相同的值。
答案 2 :(得分:2)
在你的定义中,你要对编译器说a-> b,b-> c,c-> d到底用d替换所有东西
所以你的结果代码(在预处理器之后)是:
main()
{
int d=192;
printf("%d\n",d);
printf("%d\n",d);
printf("%d\n",d);
printf("%d\n",d);
}
答案 3 :(得分:1)
你看过预处理器的输出了吗?
提示:您认为该行
int a=192;
看起来像是在预处理阶段之后?