【发布时间】:2016-12-19 01:20:47
【问题描述】:
请解释一下输出——我得到的输出是 20, 但如果我没记错的话应该是 64。
#include<stdio.h>
#define SQUARE(X) (X*X)
main()
{
int a, b=6;
a = SQUARE(b+2);
printf("\n%d", a);
}
【问题讨论】:
-
你错了——应该是 20。运行
cc -E code.c并查看 SQUARE 的扩展。 -
顺便说一句,您需要小心使用魔术引号
“\n%d”与常规引号"%d\n"— C 编译器不会接受魔术引号。您通常应该用换行符结束输出行,而不是或者也应该用换行符开始行。您应该在main()上使用显式返回类型——int(参见What shouldmain()return in C and C++?)。
标签: c